You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中完成数据质量校验、数据集合并及差异ID提取?

问题1:合并后行数超过预期的原因
  • 你设置all=FALSE调用的是内连接,匹配逻辑为左表df1的每一行,会和右表df2中所有ID相同的行一一匹配
  • 行数超过820的核心原因是df2的ID列存在重复值:假设df2中某ID出现了k次,那么df1中该ID对应的每一行都会生成k条匹配结果,最终总行数就会大于df1的原始行数
  • 验证方法:运行命令sum(duplicated(df2$ID)),如果返回值大于0,即可确认df2存在重复ID
  • 可选修复方案:如果每个ID只需要对应一个Points值,可先对df2按ID去重后再合并:
    # 保留每个ID的第一条记录,也可根据需求调整去重逻辑
    df2_unique <- df2[!duplicated(df2$ID), ]
    merged_df <- merge(df1, df2_unique, by = "ID", all = FALSE)
    
问题2:生成df3(df1存在但df2不存在的ID对应记录)

两种常用实现方式:

基础R实现

df3 <- df1[!df1$ID %in% df2$ID, ]

dplyr包实现

library(dplyr)
df3 <- anti_join(df1, df2, by = "ID")

内容的提问来源于stack exchange,提问作者Evan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:27:03