我有一个如下所示的时间栏。
Tcol <- as.data.table(c(1211, 1237, 2106, 1348, 2136, 1745, 1740, 1330, 1755, 1939, 2326, "NA"))
Tcol$V1= as.numeric(gsub("\\D+", "", Tcol$V1))
Tcol$V1[is.na(Tcol$V1)] <- 100
Tcol$V1 <- chron::chron(times=Tcol$V1)
Glimpse(Tcol)
Observations: 12
Variables: 1
$ V1 <S3: times> 1211, 1237, 2106, 1348, 2136, 1745, 1740, 1330, 1755, 1939, 2326, 100
我想将它们分组1小时或2小时块进行绘图。即
100 1
1200 2
1300 2
1700 3
1900 1
2300 1
在SO上搜索其他解决方案,似乎我应该使用cut()。但每次我应用cut()时,都会出错。
table(cut(Tcol$V1, breaks="hour"))
Error in breaks + 1 : non-numeric argument to binary operator
我无法找到解决我的问题的同一问题的其他帖子。所以我希望有人可以提供帮助。
答案 0 :(得分:0)
如果我说得对,那么您的V1
列包含格式为hm
的时间。
我不明白你要使用chron
函数完成什么,但在你的位置,我会从V1
提取一小时,然后再使用它。
# for 1 hour intervals:
Tcol[, h := as.integer(substr(V1, 1, 2))]
Tcol[, .N, by = h]
#for different intervals
breaks <- seq(0, 24, by = 2) # define breaks
Tcol[, newintervals := cut(h, breaks = breaks)]
Tcol[, .N, by = newintervals]
答案 1 :(得分:0)
Tcol[,.(Count=length(.I)),by=.(Hour=100*floor(V1/100))]