извлекать записи из date.frame в R на основе даты - PullRequest
2 голосов
/ 19 января 2012

У меня есть data.frame следующим образом:

dat <- structure(list(id = 1:4, date = structure(list(sec = c(0, 0, 
0, 0), min = c(0L, 0L, 0L, 0L), hour = c(0L, 0L, 0L, 0L), mday = 1:4, 
    mon = c(0L, 0L, 0L, 0L), year = c(110L, 110L, 110L, 110L), 
    wday = c(5L, 6L, 0L, 1L), yday = 0:3, isdst = c(0L, 0L, 0L, 
    0L)), .Names = c("sec", "min", "hour", "mday", "mon", "year", 
"wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt")), name = c("george", 
"paul", "john", "ringo")), .Names = c("id", "date", "name"), row.names = c(NA, 
-4L), class = "data.frame")

Чтобы выбрать строку с самой старой или самой последней датой, я могу использовать:

dat[(dat$date ==min(dat$date)),] и dat[(dat$date ==max(dat$date)),] соответственно.

Есть ли способ получить запись для других дат, таких как вторая самая старая или вторая самая последняя.

Спасибо.

1 Ответ

4 голосов
/ 19 января 2012

Вы можете отсортировать data.frame и взять первые или последние строки.

dat <- dat[ order(dat$date), ]
dat[1,]  # Oldest
dat[2,]  # Second oldest
n <- dim(dat)[1]
dat[n,]  # Latest
dat[n-1,] # Second most recent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...