我希望按时间汇总数据并创建等间隔的时间间隔:
date<- c(as.POSIXct("2011-08-08 21:00:00"), as.POSIXct("2011-08-08 21:26:00"))
value<-c(1,2)
dt<-data.frame(date, value)
DT<-aggregate(cbind(dt$value),list(cut(dt$date, breaks="10 min")),sum)
dt:
2011-08-08 21:00:00 1
2011-08-08 21:26:00 2
DT:
2011-08-08 21:00:00 1
2011-08-08 21:20:00 2
我想要的是什么:
2011-08-08 21:00:00 1
2011-08-08 21:10:00 NA
2011-08-08 21:20:00 2
无论如何不使用zoo或xts吗?
答案 0 :(得分:1)
我在你的最后一行假设你试图避免使用包。
坚持使用基础R,您可以尝试tapply
,但如果您跳过rownames
步骤,则您的日期将变为names
(或data.frame
:
data.frame(value = tapply(cbind(dt$value),
list(cut(dt$date, breaks="10 min")),
sum))
# value
# 2011-08-08 21:00:00 1
# 2011-08-08 21:10:00 NA
# 2011-08-08 21:20:00 2