在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毫秒,我就不能以同样的方式进行分组。
E.g。这些抛出错误:
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())
我该如何做到这一点?
答案 0 :(得分:0)
您可以将亚秒时间转换为整数,并像这样计算您想要的休息次数:
interval_in_secs <- 0.250
interval_in_secs_cut_breaks <- ( max(as.numeric(df$timestamp)) - min(as.numeric(df$timestamp)) ) / interval_in_secs
df %>%
mutate(timestamp_ms_int = 1000*as.integer(timestamp)) %>%
group_by(timestamp = cut(timestamp_ms_int, interval_in_secs_cut_breaks))