【发布时间】:2022-01-23 13:54:42
【问题描述】:
我有一个带有来自跟踪设备的事件日志的数据框。它记录了事件的类型(停留在原地或轨道/移动)、事件的名称(停留的家庭/工作/其他、轨道的交通模式)、距离和事件的开始日期时间。可以在不同地点停留之间登录多个曲目/模式更改。
type = c('place', 'track', 'track', 'place', 'track', 'place')
name = c('home', 'walk', 'bicycle', 'work', 'walk', 'other')
distance = c(0, 1120, 2300, 0, 4000, 0)
startdate = c('2021-12-19 10:00:00', '2021-12-19 11:00:00', '2021-12-19 11:05:00', '2021-12-19 11:15:00', '2021-12-19 12:00:00', '2021-12-19 12:30:00')
df = data.frame(type, name ,distance, startdate)
我希望能够为所有曲目分配一个新属性,指示记录曲目的来源和位置,例如最后一个和下一个记录的地方是什么,不包括可能相互跟随的所有轨道:
fromto = c(NA, 'home-work', 'home-work', NA, 'work-other', NA)
df = data.frame(type, name ,distance, startdate, fromto)
如果设置更简单,我可能会使用 dplyr 的滞后函数或各种类型的 cumsum,但是由于多个轨道可以相互跟随,我需要在前后行查找“名称”属性。
数据集通常会很大;是否有不需要实现循环的 R 解决方案?
【问题讨论】: