[英]R - Group datetimes using cut at < 1 second intervals
在 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())
我怎樣才能做到這一點?
您可以將亞秒時間轉換為整數並計算您想要的中斷次數,如下所示:
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.