如何提取三个不同DataFrame中id列均存在的记录?
提取多个DataFrame中共同存在的ID记录
方法一:基础R实现
直接提取各DataFrame的id列,用Reduce结合intersect函数求所有列的交集,再生成新的DataFrame:
# 示例数据 df1 <- data.frame(id = c("text1","text2","text3","text4","text5"), number1 = c(3,5,3,4,1)) df2 <- data.frame(id = c("text21","text1","text12","text2","text32"), number2 = c(4,3,33,13,11)) df3 <- data.frame(id = c("text12","text32","text1","text21","text2"), number3 = c(11,34,13,11,10)) # 计算所有DataFrame共有的ID common_ids <- Reduce(intersect, list(df1$id, df2$id, df3$id)) # 生成目标DataFrame df_same <- data.frame(id = common_ids)
运行后得到的df_same即为期望结果:
> df_same id 1 text1 2 text2
方法二:dplyr包实现
如果习惯使用tidyverse工具,可通过多次inner_join筛选共同ID,再提取id列:
library(dplyr) df_same <- df1 %>% inner_join(df2, by = "id") %>% # 保留df1和df2共有的ID inner_join(df3, by = "id") %>% # 再保留与df3共有的ID select(id) # 仅保留id列
若后续需要保留其他关联列,去掉select(id)即可。
内容的提问来源于stack exchange,提问作者Erik Brole
相关产品推荐
相关产品推荐

