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

如何提取三个不同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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:25:19