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

R语言基于其他变量条件填充occupation列缺失值的实现方法

R实现按行条件填充指定列缺失值

需求说明

  • 数据集occupation(职业)列存在缺失值,已构建is_working字段标识在职状态:取值0代表非在职,1代表在职
  • 填充规则:仅当同一行is_working取值为0时,将对应位置occupation的缺失值填充为0;其余位置的occupation缺失值保留原始缺失状态,不做处理

测试用示例数据

可直接运行以下代码生成测试数据框,用于验证填充逻辑效果:

df <- data.frame (
  occupation  = c("NA","NA","Drivers","Accountants","NA","Drivers","Laborers","Cleaning staff","Drivers","Drivers"),
  is_working = c("1","0","1","1","1","1","1","1","1","1")
)

注意事项

上述测试数据里的缺失值是字符串格式的"NA",不是R语言原生的逻辑缺失值NA,正式处理前建议先做类型转换,否则会出现缺失值匹配失败的问题。

实现代码

方法1:Base R 原生实现(无需加载第三方包)

# 字符串NA转原生NA,若你的实际数据集已经是原生NA格式可跳过此步骤
df$occupation[df$occupation == "NA"] <- NA

# 按规则执行条件填充
df$occupation[is.na(df$occupation) & df$is_working == "0"] <- "0"

方法2:dplyr 流水线实现(适配tidyverse生态工作流)

library(dplyr)

df <- df %>%
  mutate(
    # 字符串NA转原生NA,已处理可跳过
    occupation = na_if(occupation, "NA"),
    # 按规则执行条件填充
    occupation = ifelse(
      is.na(occupation) & is_working == "0",
      "0",
      occupation
    )
  )

效果说明

代码运行后,测试数据中is_working为0的第二行职业缺失值会被填充为"0",其余行(第一行、第五行)的职业缺失值会保持缺失状态,完全匹配需求。如果你的is_working列是数值类型而非字符类型,把判断条件里的"0"改为数值型0即可,避免因数据类型不匹配导致判断逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:12:46