簡體   English   中英

R - 以 < 1 秒的間隔使用 cut 對日期時間進行分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM