如何基于TIMESTAMP补充主数据集?仅导入补充数据集的唯一时间戳
解决方案
你的核心问题是用反了anti_join的左右表顺序,导致拿到的是主数据集独有的数据,而非补充数据集里主数据集缺失的部分。正确的做法是先提取补充数据集中主数据集没有的时间戳记录,再合并到主数据集。
步骤1:提取补充数据集中的缺失记录
使用anti_join时,将补充数据集放在左侧,主数据集放在右侧,这样就能得到补充数据集中主数据集没有的TIMESTAMP对应的行:
library(dplyr) # 提取Supplemental中Master没有的TIMESTAMP记录 missing_records <- Supplemental %>% anti_join(Master, by = "TIMESTAMP")
步骤2:合并到主数据集
用bind_rows将提取出的缺失记录和原主数据集合并,得到完整数据集:
Complete <- bind_rows(Master, missing_records) # 可选:按TIMESTAMP排序,让时间序列更规整 Complete <- Complete %>% arrange(TIMESTAMP)
验证结果
合并后的Complete数据集会包含原Master的6条记录,加上Supplemental中独有的2019-04-27 18:00:00和2019-04-27 18:20:00两条记录,共8条,完美填补了主数据集的时间缺口。
为什么之前的代码不对?
你之前的anti_join(Master, Supplemental)是保留Master中不在Supplemental的行,也就是Master独有的17:50和18:40这两条,这和你想要的“用补充数据填补缺口”的需求完全相反,调换左右表顺序就能解决问题。
内容的提问来源于stack exchange,提问作者shrimp
相关产品推荐
相关产品推荐

