[英]Splitting a dateTime vector if time is greater than x between vector components
我有以下數據:
df <- data.frame(index = 1:85,
times = c(seq(as.POSIXct("2020-10-03 21:31:00 UTC"),
as.POSIXct("2020-10-03 22:25:00 UTC")
"min"),
seq(as.POSIXct("2020-11-03 10:10:00 UTC"),
as.POSIXct("2020-11-03 10:39:00 UTC"),
"min")
))
如果我們看一下第 55 行和第 56 行,就會發現時間上有明顯的區別:
> df[55:56, ]
index times
55 55 2020-10-03 22:25:00
56 56 2020-11-03 10:10:00
我想根據拆分添加第三個分類列split
,
例如行df$split[55, ] = A
和行df$split[56, ] = B
邏輯像
如果行之間的時間間隔大於 5 分鍾,則為后續行啟動新類別,直到下一個時間間隔 > 5 分鍾的實例。
謝謝
你可以使用
library(dplyr)
df %>%
mutate(cat = 1 + cumsum(c(0, diff(times)) > 5))
返回
index times cat
1 1 2020-10-03 21:31:00 1
2 2 2020-10-03 21:32:00 1
3 3 2020-10-03 21:33:00 1
4 4 2020-10-03 21:34:00 1
5 5 2020-10-03 21:35:00 1
6 6 2020-10-03 21:36:00 1
7 7 2020-10-03 21:37:00 1
8 8 2020-10-03 21:38:00 1
...
53 53 2020-10-03 22:23:00 1
54 54 2020-10-03 22:24:00 1
55 55 2020-10-03 22:25:00 1
56 56 2020-11-03 10:10:00 2
57 57 2020-11-03 10:11:00 2
58 58 2020-11-03 10:12:00 2
59 59 2020-11-03 10:13:00 2
如果您需要字母或其他東西,您可以使用
df %>%
mutate(cat = LETTERS[1 + cumsum(c(0, diff(times)) > 5)])
將類別1
和2
轉換為A
和B
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.