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

如何在RStudio中生成同id下对应其他行被照料者年龄的新变量

R实现按家庭ID匹配被照料者年龄的解决方案

你可以通过dplyr包快速实现该需求,核心逻辑为按家庭ID分组后,匹配同组内rank值与care值一致的记录,提取对应年龄即可,具体操作步骤如下:

1. 安装加载依赖包

如果未安装dplyr先执行安装,已安装可直接加载:

# 安装包(仅需执行一次)
install.packages("dplyr")
# 加载包
library(dplyr)

2. 构造示例测试数据

你可以直接运行以下代码生成和你示例一致的测试数据验证效果:

df <- data.frame(
  id = c(1,1,2,2,2,3,3,4,4,4),
  rank = c(1,2,1,2,3,1,2,1,2,3),
  age = c(20,2,30,28,4,26,3,22,23,1),
  sex = c("female","female","male","female","male","female","male","female","male","male"),
  care = c(2,NA,3,NA,NA,2,NA,NA,3,NA)
)

3. 核心计算代码

仅需3行代码即可生成目标new字段:

df <- df %>%
  group_by(id) %>%
  mutate(new = age[match(care, rank)]) %>%
  ungroup()

代码逻辑说明

  • group_by(id):按照家庭id分组,所有计算仅在同家庭内生效
  • match(care, rank):找到当前行care值在同组rank列中对应的位置
  • age[对应位置]:提取对应位置的age值赋值给new字段,care为NA时自动返回NA

运行后得到的结果和你给出的示例完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:54:02