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

如何用dplyr比较三个DataFrame,生成行存在性标识表

使用dplyr比较三个DataFrame的行存在性

实现思路

通过为每个DataFrame添加专属存在标记,再进行全连接合并,最后将缺失的标记值替换为FALSE,即可得到以id/name/zip为唯一标识的行在各DataFrame中的存在情况。

具体代码

首先加载dplyr工具包:

library(dplyr)

处理原始DataFrame,提取核心标识列并添加对应存在标记:

# 提取每个DataFrame的标识列,添加存在标记
df1_flagged <- df1 %>% select(id, name, zip) %>% mutate(present_in_df1 = TRUE)
df2_flagged <- df2 %>% select(id, name, zip) %>% mutate(present_in_df2 = TRUE)
df3_flagged <- df3 %>% select(id, name, zip) %>% mutate(present_in_df3 = TRUE)

全连接三个标记后的表,将缺失的存在标记补为FALSE:

# 合并并整理最终结果
result <- df1_flagged %>%
  full_join(df2_flagged, by = c("id", "name", "zip")) %>%
  full_join(df3_flagged, by = c("id", "name", "zip")) %>%
  mutate(across(starts_with("present_in"), ~replace_na(.x, FALSE)))

结果验证

运行代码后,打印result即可得到预期表格:

print(result)

输出内容:

id    name   zip present_in_df1 present_in_df2 present_in_df3
1  1   Smith 12345           TRUE           TRUE           TRUE
2  2  Winter 23456           TRUE           TRUE           TRUE
3  3  Summer 34567           TRUE           TRUE          FALSE
4  5  Taylor 56789          FALSE           TRUE          FALSE
5  4  Miller 45678          FALSE          FALSE           TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:31:01