如何在R中按ID分组并基于日期合并两个dataframe
R合并两个按ID分组的时间序列数据框解决方案
你之前的代码错误原因是:按ID分组生成行号作为匹配键,但两个数据框同一ID下的条目数量、时间对应关系都不匹配,自然得不到预期结果。
可行实现代码
# 加载依赖包 library(tidyverse) # 首先将两个数据框的date列转换为标准日期时间格式,避免字符串匹配误差,也方便后续计算时间差 d1 <- d1 %>% mutate(date = as.POSIXct(date)) d2 <- d2 %>% mutate(date = as.POSIXct(date)) # 按ID和date做全连接,之后按ID、时间升序排序即可 d12 <- full_join(d1, d2, by = c("ID", "date")) %>% arrange(ID, date)
运行上述代码得到的d12和你期望的输出完全一致。如果后续需要计算两个表条目之间的时间邻近度,可以在按ID分组后使用lag()、lead()函数计算相邻行的时间差,也可以用模糊匹配的方式找到每个条目对应最近的另一表记录。
内容的提问来源于stack exchange,提问作者Katharina
相关产品推荐
相关产品推荐

