[英]Aggregate a data frame in R by equally spaced time intervals
我想按時間匯總數據並創建等距的時間間隔:
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就能做到這一點嗎?
我在最后一行假設您正在嘗試避免使用軟件包。
與基礎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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.