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

R语言中如何检查数据集1:1合并的匹配结果?

在R中检查数据合并的匹配情况

首先,你提供的合并代码存在语法问题,正确的1:1合并需要调用merge()函数:

# 默认内连接,仅保留双方匹配的记录
data_merge <- merge(dataset1, dataset2, by.x = "name", by.y = "name")

完全可以对合并结果的匹配情况进行统计和标记,具体操作如下:

快速标记匹配来源

在merge()函数中添加all = TRUE(保留所有记录)和indicator = TRUE(自动生成匹配标记列)参数:

# 生成包含所有记录的合并结果,并添加来源标记
data_merge_full <- merge(dataset1, dataset2, by.x = "name", by.y = "name", 
                         all = TRUE, indicator = TRUE)

标记列说明

自动生成的_merge列会明确每条记录的来源:

  • both:同时存在于dataset1和dataset2的匹配记录
  • left_only:仅在dataset1中存在的记录
  • right_only:仅在dataset2中存在的记录

统计各类记录数量

用table()函数直接统计不同来源的记录数:

table(data_merge_full$`_merge`)

自定义标记(可选)

如果需要更直观的标记名称,可以手动生成自定义列(需替换示例中的独有列名):

# 先执行全连接
data_merge_full <- merge(dataset1, dataset2, by.x = "name", by.y = "name", all = TRUE)
# 自定义匹配状态列
data_merge_full$match_status <- case_when(
  !is.na(data_merge_full$col1_from_ds1) & !is.na(data_merge_full$col1_from_ds2) ~ "双方匹配",
  !is.na(data_merge_full$col1_from_ds1) & is.na(data_merge_full$col1_from_ds2) ~ "仅来自dataset1",
  is.na(data_merge_full$col1_from_ds1) & !is.na(data_merge_full$col1_from_ds2) ~ "仅来自dataset2"
)
# 统计数量
table(data_merge_full$match_status)

注:col1_from_ds1和col1_from_ds2需替换为两个数据集中各自独有的列名,用于判断记录归属。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:55:19