簡體   English   中英

如果向量分量之間的時間大於 x,則拆分 dateTime 向量

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

將類別12轉換為AB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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