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

R语言中按个体重复指定单元格值的实现方法

解决R语言分组填充缺失值的问题

嗨,作为R语言新手碰到这种数据整理的需求太常见啦!我来给你两种简单易懂的方法,轻松实现按picode分组,把每组里IUGRsc1的非NA值填充到该组所有行中。

首先先确认你的数据集:

dfX <- data.frame("picode" = c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,4,4,4,4,4,5,6,6,6,6), 
                  "Age" = c(0,7,14,21,28,30,0,7,14,21,28,30,0,8,0,8,15,21,29,0,0,5,7,14), 
                  "IUGRsc1" = c(0.12,NA,NA,NA,NA,NA,0.26,NA,NA,NA,NA,NA,0.15,NA,0.19,NA,NA,NA,NA,0.3,0.23,NA,NA,NA))

方法一:用dplyr的mutate+first组合

这是最直观的方式,先按picode分组,然后提取每组里IUGRsc1的非NA值,填充到整组:

# 先安装并加载dplyr包(如果没装过的话)
# install.packages("dplyr")
library(dplyr)

dfX2 <- dfX %>%
  group_by(picode) %>%  # 按个体picode分组
  mutate(IUGRsc1 = first(na.omit(IUGRsc1))) %>%  # 取每组非NA的第一个值,替换整列
  ungroup()  # 取消分组,回到普通数据框

方法二:用dplyr的fill函数

fill函数专门用来填充缺失值,设置方向后可以一键搞定:

dfX2 <- dfX %>%
  group_by(picode) %>%
  fill(IUGRsc1, .direction = "downup") %>%  # 先向下填充,再向上(确保所有NA都被覆盖)
  ungroup()

你可以查看结果验证一下,比如用head(dfX2, 6),会看到picode=1的所有行IUGRsc1都是0.12,完全符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:45:27