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

如何在R语言中合并数据表并填充对应ID的年龄值?

用R实现按ID填充有效年龄的方法

先构造示例数据(可直接复制运行测试):

df1 <- data.frame(
  ID = c(1,1,2,2,2),
  running_time = c(10,2,1,3,4)
)

df2 <- data.frame(
  ID = c(1,1,2,2,2),
  age = c(20, NA, 30, NA, NA)
)

以下是两种常用实现方式:

方法一:Base R 原生实现

无需额外安装包,步骤清晰:

  1. 从df2中提取每个ID对应的唯一有效年龄(去除NA和重复项)
  2. 通过ID匹配合并到df1中
# 提取每个ID的有效年龄参考表
age_ref <- na.omit(df2)[!duplicated(na.omit(df2)$ID), ]

# 左连接合并,保留df1的所有行
result <- merge(df1, age_ref, by = "ID", all.x = TRUE)

方法二:tidyverse包(dplyr)实现

管道语法更直观,适合习惯现代R语法的用户:

  1. 首次使用需先安装包,后续直接加载即可
  2. 处理df2得到每个ID的有效年龄
  3. 左连接到df1
# 首次使用执行安装命令
# install.packages("tidyverse")

library(dplyr)

# 生成年龄参考表
age_ref <- df2 %>%
  filter(!is.na(age)) %>%  # 过滤NA值
  distinct(ID, age)        # 保留每个ID对应的唯一年龄

# 左连接合并
result <- df1 %>%
  left_join(age_ref, by = "ID")

运行任意一种方法后,result即为你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:05:22