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
相关产品推荐
相关产品推荐

