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

如何基于ID/因子水平为行结构不同的重复ID数据框赋值?

解决方案

你提到的场景完全可以用merge()或者其他匹配方法实现,以下是几种可行的方案:

1. Base R 原生 merge() 方法

merge() 支持保留左表(df2)的所有行,即使存在重复id,也会自动将df1中的对应值重复填充:

# 按id匹配,保留df2的所有行
df2_merged <- merge(df2, df1, by = "id", all.x = TRUE)

2. dplyr 包的 left_join() 方法

如果习惯使用tidyverse风格,left_join() 更简洁直观:

library(dplyr)

df2_joined <- df2 %>%
  left_join(df1, by = "id")

3. Base R 手动匹配赋值

用match()函数直接定位id的位置,手动添加列:

# 给df2添加sex列
df2$sex <- df1$sex[match(df2$id, df1$id)]
# 给df2添加age列
df2$age <- df1$age[match(df2$id, df1$id)]

以上三种方法处理后,df2中重复的id都会对应df1里的sex和age值,比如id为b的两行都会得到sex=F、age=51,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:13:20