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

如何在R中提取两个数据框中不匹配值对应的ID?

提取差异ID并子集化数据框

你可以直接从comparedf的结果对象中提取差异数据,无需仅依赖summary输出。具体步骤如下:

  1. 保存comparedf的完整结果到变量,而非直接输出summary
  2. 从结果对象中提取包含所有差异的数据集
  3. 提取唯一的差异ID,并用这些ID对df1进行子集化

完整代码示例

df1 <- data.frame(id = c("a", "b", "c", "d","e"),
                  var = c(1, 2, 3, 4, 5),
                  var2 = c(1,2,3,4,5))
df2 <- data.frame(id = c("a", "b", "c", "d","e"),
                  var =c(1,3,4,2,5),
                  var2 = c(1,2,4,3,5))

library(arsenal)
# 存储比较结果
comp_result <- comparedf(df1, df2, by = "id")
# 提取差异记录的数据框
diff_data <- comp_result$comparison
# 获取唯一的差异ID向量
unique_diff_ids <- unique(diff_data$id)
# 对df1进行子集化,保留所有存在差异的ID对应的行
df1_diff_subset <- df1[df1$id %in% unique_diff_ids, ]

说明

  • comp_result$comparison就是summary输出里展示的差异表对应的完整数据集,包含所有列的不匹配记录
  • 使用unique()是因为同一个ID可能在多列存在不匹配(比如示例中的c和d),去重后能得到所有有差异的唯一ID
  • 如果需要保留所有不匹配的行(包括同一ID的多条差异记录),可以直接使用diff_data$id,但通常子集化只需要唯一ID对应的整行数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:52:13