我有以下表格的数据:
[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
答案 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