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

如何在R语言中按指定模式填充数据框x1列的缺失值?

解决方案

首先需要注意:你的样本数据中x1列的"NA"是字符串类型,并非R原生的缺失值NA,第一步需先将其转换为真正的缺失值并转为数值型:

# 转换字符型"NA"为缺失值,并转为数值列
g$x1 <- as.numeric(g$x1)

针对大型数据集,推荐使用向量化操作提升效率,以下提供两种实现方式:

方法一:使用dplyr(tidyverse生态)

借助lag()函数获取前一行值,通过case_when()按规则填充:

library(dplyr)

g_filled <- g %>%
  mutate(x1 = case_when(
    # 前一行是2018时,当前缺失值填2017
    is.na(x1) & lag(x1) == 2018 ~ 2017,
    # 前一行是2016时,当前缺失值填2018
    is.na(x1) & lag(x1) == 2016 ~ 2018,
    # 非缺失值保持原样
    TRUE ~ x1
  ))

方法二:Base R(无需额外包)

通过定位缺失值位置,结合循环填充(若数据集极大,效率略低于向量化方法):

# 定位x1列的缺失值位置
na_positions <- which(is.na(g$x1))

# 遍历缺失值位置,按规则填充
for (pos in na_positions) {
  prev_value <- g$x1[pos - 1]
  if (prev_value == 2018) {
    g$x1[pos] <- 2017
  } else if (prev_value == 2016) {
    g$x1[pos] <- 2018
  }
}

执行后得到的结果与你期望的数据集完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:28:25