在 R 中,我可以使用 cut
函数将日期时间按时间间隔分组。
要创建带有毫秒的日期时间数据,可以使用类似 as.POSIXct(nanotime::nanotime(1112089999201723886))
的纪元时间戳。
这里是一些玩具数据:
times = c(as.POSIXct(nanotime::nanotime(1112089999201723886)), as.POSIXct(nanotime::nanotime(1112089999201724886)), as.POSIXct(nanotime::nanotime(1112089999201725886)), as.POSIXct(nanotime::nanotime(1112089999201726886)), as.POSIXct(nanotime::nanotime(1112089999201727886))),
as.POSIXct(nanotime::nanotime(1112089999201728886)))
x=c(5,6,7,8,9,10)
y=c('F','A','T','P','O','O')
以表格形式呈现:
data
# A tibble: 9,188 x 3
datetime x y
<dttm> <dbl> <chr>
1 2000-12-31 5:00:00 5 F
2 2000-12-31 5:00:00 6 A
3 2000-12-31 5:00:00 7 T
4 2000-12-31 5:00:00 8 P
5 2000-12-31 5:00:00 9 O
6 2000-12-31 5:00:00 10 O
例如,这个可以工作:
data %>% group_by(time_group=cut(datetime, "1 sec")) %>% summarise(count=n())
然而,如果我想按小于一秒钟的时间间隔分组,比如半秒钟、十分之一秒钟或50毫秒,我不能用同样的方法。例如,以下代码会抛出错误:
data %>% group_by(time_group=cut(datetime, "0.5 sec")) %>% summarise(count=n())
data %>% group_by(time_group=cut(datetime, "1 ms")) %>% summarise(count=n())
我该怎么做呢?
dplyr
是不可能的... - guydplyr
,但仍需要与之提出的xts
或其他方法一起使用。dplyr
本身不支持你所需的功能。即使是你原来针对大于1秒的时间间隔的解决方案也使用了base
中的cut
函数。 - M--