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

在R语言中为数据集补全年份缺失行并设置对应变量值

修正后的R代码实现需求

原代码的核心问题:

  • 冗余的fill操作:complete已经为每个id生成了完整年份序列,无需对year列做填充;对var的填充完全多余,后续的mutate(var=0)还直接覆盖了所有原有值。

以下是修正后的代码:

library(dplyr)
library(tidyr)

my_data %>% 
  group_by(id) %>% 
  # 生成每个id从最小年份到最大年份的连续序列
  complete(year = full_seq(year, period = 1)) %>% 
  # 将新增行的NA值替换为0,保留原有行的var值
  mutate(var = ifelse(is.na(var), 0, var)) %>%
  ungroup()

运行后得到的预期结果:

# A tibble: 16 × 3
   id     year   var
   <chr> <dbl> <dbl>
 1 james  2013     1
 2 james  2014     0
 3 james  2015     0
 4 james  2016     1
 5 james  2017     1
 6 james  2018     1
 7 james  2019     0
 8 james  2020     1
 9 john   2010     1
10 john   2011     1
11 john   2012     0
12 john   2013     0
13 john   2014     1
14 john   2015     0
15 john   2016     1
16 john   2017     1

代码逻辑说明

  1. group_by(id):按用户id分组,保证每个id独立处理年份序列
  2. complete(year = full_seq(year, period = 1)):为每个id生成从自身最小年份到最大年份的连续年份,新增行的var会自动标记为NA
  3. mutate(var = ifelse(is.na(var), 0, var)):将新增行的NA值替换为0,原有存在的var值保持不变
  4. ungroup():取消分组,恢复为普通数据结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:50:53