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

如何依据ID列将df1的group列匹配添加至df2?

解决方案

方法一:基础R merge() 函数

利用merge()按ID列合并两个数据框,由于每个ID对应的group是唯一值,直接合并即可保留df2的所有行并匹配对应group:

df2final <- merge(df2, df1[, c("ID", "group")], by = "ID", all.x = TRUE)

执行后输出:

> df2final
       ID data3  group
1 person1     7 group1
2 person2     8 group2
3 person2     9 group2
4 person3    10 group1
5 person3    11 group1
6 person4    12 group2
7 person4    13 group2

方法二:tidyverse 包(dplyr)

若习惯用tidyverse语法,可先提取df1中唯一的ID-group对应关系,再通过left_join匹配到df2:

library(dplyr)

# 提取唯一的ID-group映射关系
group_map <- df1 %>% 
  distinct(ID, group)

# 将group匹配到df2
df2final <- df2 %>% 
  left_join(group_map, by = "ID")

输出结果与方法一完全一致。

补充说明

  • merge()的all.x = TRUE参数确保保留df2的所有行,即使df1中无对应ID(本题中ID完全重叠,该参数可省略,但保留能提升代码通用性)
  • 提前用distinct()去重可减少合并时的计算量,在df1行数较多时更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:46:01