【发布时间】:2022-01-28 09:23:52
【问题描述】:
我想计算具有时间元素的不同事件。当某个事件按时间顺序重复时,我只想把这个事件归功于一次。在该数据中,事件是移动性事件,因此假设被动移动性事件(对或错,不重要)是连续动作而不是不同的。这只会在特定的 event_date 中起作用,例如:
假设我有这个 df
df <- data.frame(id = c("1", "1", "1", "1", "2", "2", "2", "2"),
event = c("sitting", "sitting", "sitting", "sitting", "sitting", "walking", "sitting", "sitting"),
timestamp = c('2021-12-19 11:30:00', '2021-12-19 12:30:00', '2021-12-19 13:30:00', '2021-12-20 14:30:00', '2021-12-20 12:00:00', '2021-12-20 12:30:00', '2021-12-20 13:30:00', '2021-12-20 14:30:00'))
df$timestamp <- as.POSIXct(df$timestamp)
df$event_date <- as.Date(df$timestamp, format = "%Y-%m-%d")
> df
id event timestamp event_date
1 1 sitting 2021-12-19 11:30:00 2021-12-19
2 1 sitting 2021-12-19 12:30:00 2021-12-19
3 1 sitting 2021-12-19 13:30:00 2021-12-19
4 1 sitting 2021-12-19 14:30:00 2021-12-19
5 2 sitting 2021-12-20 12:00:00 2021-12-20
6 2 walking 2021-12-20 12:30:00 2021-12-20
7 2 sitting 2021-12-20 13:30:00 2021-12-20
8 2 sitting 2021-12-20 14:30:00 2021-12-20
我想实现如下所示的输出:
> df
id event_date mobility_events
1 1 2021-12-19 1
2 1 2021-12-20 1
3 2 2021-12-20 3
id 1 仅在第一个 event_date 获得 1 个移动性事件的功劳,因为它在该 event_date 处于同一活动的 3 个连续时间戳。 id 2 获得了 3 个事件的荣誉,因为坐着的事件被另一个事件打断了;但是,最后一次参加的活动并没有获得荣誉,因为它是按时间顺序排列的,并且不受其他活动的干扰。
我希望这很清楚。
【问题讨论】: