使用R按小时聚合数据

时间:2016-08-25 11:25:25

标签: r time-series xts zoo

我有以下表格的数据:

[1] "Mon Feb 01 09:11:55 +0000 2016" "Mon Feb 01 09:12:11 +0000 2016" ""
[4] "Mon Feb 01 09:14:25 +0000 2016" "" "Mon Feb 01 09:15:40 +0000 2016"

我想用R。

绘制它

我想每小时计算一次计数,所以9到10AM之间的所有计数都会计入一个桶中,依此类推。数据将持续数天,但日期不重要,只需几小时。我可能也想把小时换成30分钟说。 我尝试了各种各样的事情,但我有点超出了我的深度,并且非常感谢一些基本步骤让它发挥作用。

我试过了:

str <- strptime(dt, "%a %b %d   %H:%M:%S %z %Y", tz = "GMT") 
# head(str,3)
( dt.gmt <- as.POSIXct(str, tz = "GMT") )
format(dt.gmt, tz = "EST", usetz = TRUE)
hms <- format(dt.gmt , format = "%H:%M:%S")
hms<-as.numeric(hms)
head(hms,3)
hms <- table(cut(hms, breaks="hour"))

给出错误:

Error in breaks + 1 : non-numeric argument to binary operator

我也尝试过:

aggdata <-aggregate(hms, by=(hms), FUN=mean, na.rm=TRUE)

给出:

Error in aggregate.data.frame(as.data.frame(x), ...) :   'by' must be a list

1 个答案:

答案 0 :(得分:0)

好的,我刚试过这个,可能这可以帮到你

dt <- c("Mon Feb 01 09:11:55 +0000 2016", "Mon Feb 01 10:12:11 +0000 
         2016","Mon Feb 01 09:21:55 +0000 2016" )
df <- data.frame('time' = dt, 
             'id' = c(1, 3, 2))
df$time <- as.POSIXct(gsub("^.+? | \\+\\d{4}","", df$time),
                                                          format = "%B %d %X %Y")
df$time  <- as.POSIXlt(df$time)
df$hour <- format(df$time, format = '%H')
df
pivot <- aggregate(df$id, by = list(df$hour), FUN = length)
pivot