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

R语言如何将同ID筛选期var2值重复填充到该ID所有行?

R语言按组填充指定行值的实现方法

以下是3种可直接运行的实现方案:

方法1:dplyr(tidyverse生态常用写法)

按ID分组后直接提取每组内screening访视对应的var2值,自动填充到组内所有行:

library(dplyr)
df1 <- df1 %>%
  group_by(ID) %>%
  mutate(var3 = var2[visit == "screening"]) %>%
  ungroup()

如果需要适配更复杂的填充规则,也可以用ifelse+fill的组合实现:

df1 <- df1 %>%
  group_by(ID) %>%
  mutate(var3 = ifelse(visit == "screening", var2, NA)) %>%
  fill(var3, .direction = "downup") %>%
  ungroup()

方法2:base R(无需加载第三方包)

先构建ID与screening期var2的匹配表,再通过ID匹配填充全表:

# 生成查找表:仅保留每个ID的screening行
lookup <- df1[df1$visit == "screening", c("ID", "var2")]
# 按ID匹配填充
df1$var3 <- lookup$var2[match(df1$ID, lookup$ID)]

方法3:data.table(大数据量下性能最优)

library(data.table)
setDT(df1)[, var3 := var2[visit == "screening"], by = ID]

之前使用filter未得到正确结果的核心原因是filter会仅保留符合条件的行,丢失其余访视记录,需要将筛选得到的基准值与原表做关联匹配后再填充。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:27:01