我有两个要合并的数据帧。一个dataframe具有活动列表和活动的开始时间。另一个数据帧有一个正在运行的时钟,其中包含一些逐分钟的数据。例如
df1
ID ACTIVITY Timestamp
1 Act1 2014-11-10 11:56:00
1 Act2 2014-11-10 11:59:00
1 Act3 2014-11-10 12:02:00
1 Act4 2014-11-10 12:06:00
...df2
ID Timestamp
1 2014-11-10 11:56:00
1 2014-11-10 11:57:00
1 2014-11-10 11:58:00
1 2014-11-10 11:59:00
1 2014-11-10 12:00:00
1 2014-11-10 12:01:00
1 2014-11-10 12:02:00
...我希望合并这两个时间戳,以便将df1中的活动应用于匹配的时间戳和下一个活动时间戳之前的所有后续分钟
我尝试了以下代码,但它只将活动应用于匹配的时间戳
我希望是这样的
ID Timestamp ACTIVITY
1 2014-11-10 11:56:00 Act1
1 2014-11-10 11:57:00 Act1
1 2014-11-10 11:58:00 Act1
1 2014-11-10 11:59:00 Act2
1 2014-11-10 12:00:00 Act2
1 2014-11-10 12:01:00 Act2
1 2014-11-10 12:02:00 Act3
...但是我是从我目前拥有的代码中得到的
merge(df1, df2, by = c("ID", "Timestamp"), copy = TRUE, all.y = T)
ID Timestamp ACTIVITY
1 2014-11-10 11:56:00 Act1
1 2014-11-10 11:57:00 NA
1 2014-11-10 11:58:00 NA
1 2014-11-10 11:59:00 Act2
1 2014-11-10 12:00:00 NA
1 2014-11-10 12:01:00 NA
1 2014-11-10 12:02:00 Act3
...发布于 2019-04-21 03:10:54
尝尝这个
merge(df1, df2, by = c("ID", "Timestamp"), copy = TRUE, all.y = T) %>%
mutate(ACTIVITY2 = case_when(is.na(ACTIVITY) ~ lag(ACTIVITY),
TRUE ~ ACTIVITY))https://stackoverflow.com/questions/55768885
复制相似问题