我有以下資料:
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 分鐘的實體。
謝謝
uj5u.com熱心網友回復:
你可以使用
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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/459850.html
上一篇:檢查chrono::DateTime<Utc>是否在日期和時間范圍內的慣用方法?
下一篇:如何在字串中包含動態日期
