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

在R语言中如何将指定列中的0替换为NA?

替换数据框指定列中的0为NA

先构造示例数据,方便你测试:

df <- data.frame(
  col1 = c(1, 0, 5, 3),
  col2 = c(0, 3, 2, 0),
  col3 = c(4, 0, 2, 2),
  col4 = c(1, 3, 0, 1)
)

方法1:Base R 原生实现

通过列索引定位(第2、4列)

直接选取目标列,将其中等于0的元素替换为NA:

df[, c(2, 4)][df[, c(2, 4)] == 0] <- NA

通过列名定位(更直观)

如果知道列名,用列名指定更清晰:

df[, c("col2", "col4")][df[, c("col2", "col4")] == 0] <- NA

方法2:tidyverse/dplyr 风格实现

如果你习惯用tidyverse工具链,用across(新版dplyr推荐)或mutate_at更简洁:

用across(dplyr 1.0.0及以上版本)

library(dplyr)

df <- df %>%
  across(c(col2, col4), ~ ifelse(.x == 0, NA, .x))

用mutate_at(兼容旧版dplyr)

df <- df %>%
  mutate_at(vars(col2, col4), ~ ifelse(.x == 0, NA, .x))

执行完任意一种方法后,查看结果:

print(df)

输出就是你期望的结果:

col1 col2 col3 col4
1    1   NA    4    1
2    0    3    0    3
3    5    2    2   NA
4    3   NA    2    1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:25:21