【发布时间】:2019-11-17 06:29:32
【问题描述】:
我每天有大约 50 个独特的事件发生不止一次。解决方案应该通过事件检查它们的开始时间是否在timestamp 列中引用它们。由于timestamp 存储,start 和end 时间。并且,有些事件可能一个接一个地发生,具有不同的开始时间和不同的结束时间。
我很难弄清楚以下几点:
我有一个小标题:timestamp 包含精确到毫秒的事件的确切开始和结束,所以start 和stop 都在timestamp
start 列包含事件的开始,不包括毫秒stop 列包含事件的结束,精确到毫秒
event 列包含事件的名称
我想将事件开始时的timestamp 的毫秒数转移到start 列中的start 列中开始的特定事件的毫秒数。
options(digits.secs=3)
timestamp <- as.POSIXct(c("2019-01-07 06:05:23.582 CET", "2019-01-07 06:05:23.582 CET", "2019-01-07 06:05:23.582 CET",
"2019-01-07 06:05:43.967 CET", "2019-01-07 06:05:43.967 CET", "2019-01-07 06:05:43.967 CET",
"2019-01-07 06:05:45.026 CET","2019-01-07 06:07:10.463 CET", "2019-01-07 06:07:10.463 CET",
"2019-01-07 06:07:18.467 CET"))
start <- as.POSIXct(c("2019-01-07 06:05:23 CET", "2019-01-07 06:05:23 CET", "2019-01-07 06:05:23 CET", "2019-01-07 06:05:23 CET",
"2019-01-07 06:05:23 CET", "2019-01-07 06:05:23 CET", "2019-01-07 06:05:23 CET", "2019-01-07 06:07:10 CET",
"2019-01-07 06:07:10 CET", "2019-01-07 06:07:10 CET"))
stop <- as.POSIXct(c(NA, NA, NA, "2019-01-07 06:05:43.967 CET", NA, "2019-01-07 06:05:43.967 CET",
"2019-01-07 06:05:45.026 CET", NA, NA, "2019-01-07 06:07:18.467 CET"))
event <- c("A", "A", "B", "A", "B", "A", "B", "C", "B", "B")
df <- tibble(timestamp = timestamp, start = start, stop = stop, event = event)
df
最终目标如下表:
start stop event
<dttm> <dttm> <chr>
1 2019-01-07 06:05:23.582 2019-01-07 06:05:43.967 A
2 2019-01-07 06:05:23.582 2019-01-07 06:05:45.026 B
3 2019-01-07 06:07:10.463 2019-01-07 06:07:18.467 B
从timestamp 转移到start 列的事件开始的毫秒数。
在我的例子中,事件 A 发生了两次,开始和停止时间完全相同,精确到毫秒,所以只需要一个事件。
提前谢谢你!
【问题讨论】:
标签: r for-loop dplyr tidyverse lubridate