也許更有效的方式存在,但這應該工作
Dat <- data.frame(x=1:5, y=as.POSIXct(c("2017-02-01 16:05:35", "2017-02-01 16:15:35", "2017-02-01 18:15:37",
"2017-02-01 23:30:35", "2017-02-01 01:15:35")))
Dat <- Dat[order(Dat[,"y"]),]
require(lubridate)
Dat[,"span6"] <- Dat[,"y"] - hours(6)
Dat[,"span24"] <- Dat[,"y"] - hours(24)
for(s in Dat[,"span6"]){
Dat[which(Dat[,"span6"]==s),"v6"] <-
nrow(Dat[which(Dat[,"y"]>=s & Dat[,"y"]<Dat[which(Dat[,"span6"]==s),"y"]),])
}
for(s in Dat[,"span24"]){
Dat[which(Dat[,"span24"]==s),"v24"] <-
nrow(Dat[which(Dat[,"y"]>=s & Dat[,"y"]<Dat[which(Dat[,"span24"]==s),"y"]),])
}
Dat <- Dat[,!(names(Dat) %in% c("span6","span24"))]
它看起來笨拙,但完美的作品!非常感謝你。 – staove7