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

R语言按分组使用1997-2001数值序列唯一填充缺失值NA问题

R按分组填充缺失年份解决方案

核心实现逻辑:按id分组,取出每个分组中已存在的非空年份,用1997~2001的固定序列和已有年份的差集替换对应分组的NA值即可。

解法1:tidyverse(dplyr)实现

library(dplyr)
# 定义目标年份序列
target_years <- 1997:2001

result <- d %>%
  group_by(id) %>%
  mutate(year = replace(year, is.na(year), setdiff(target_years, year[!is.na(year)]))) %>%
  ungroup()

解法2:Base R实现

target_years <- 1997:2001
result <- d
result$year <- unlist(lapply(split(d$year, d$id), function(group_y) {
  group_y[is.na(group_y)] <- setdiff(target_years, group_y[!is.na(group_y)])
  group_y
}))

最终输出结果

print(result)
#>    id year
#> 1   1 1997
#> 2   1 1998
#> 3   1 1999
#> 4   1 2000
#> 5   1 2001
#> 6   2 1997
#> 7   2 1998
#> 8   2 1999
#> 9   2 2000
#> 10  2 2001
#> 11  3 1997
#> 12  3 1998
#> 13  3 1999
#> 14  3 2000
#> 15  3 2001

内容的提问来源于stack exchange,提问作者Maël

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:04