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

R语言如何将数据框中的NA、Fail替换为0,Pass替换为1

R数据框值替换正确实现方案

原代码失效核心原因

  • 判断NA不能使用== NA,R中任意值与NA做相等判断都会返回NA,必须使用is.na()函数识别NA
  • 若result类列是因子类型,直接赋值数值会因level不匹配报错
  • 逐列硬编码写法效率低,易出现索引错误

基础R实现(无需加载额外包)

# 1. 全局替换所有NA为0
df[is.na(df)] <- 0

# 2. 批量处理所有result列,Pass转1、Fail转0
result_cols <- c("result exam 1", "result exam 2", "result exam 3")
df[result_cols] <- lapply(df[result_cols], function(col) {
  ifelse(col == "Pass", 1, 0)
})

dplyr简洁实现(适合tidyverse用户)

library(dplyr)

df <- df %>%
  # 所有列替换NA为0
  mutate(across(everything(), ~replace(., is.na(.), 0))) %>%
  # 批量匹配result开头的列做值转换
  mutate(across(starts_with("result exam"), ~ifelse(. == "Pass", 1, 0)))

验证处理结果

执行完转换后可运行以下代码校验:

# 确认无残留NA
table(is.na(df))
# 查看result列取值是否只有0和1
lapply(df[grep("^result exam", names(df))], table)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:30:05