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

