📜  在 R DataFrame 中用 NA 替换 0(1)

📅  最后修改于: 2023-12-03 15:07:47.497000             🧑  作者: Mango

在 R DataFrame 中用 NA 替换 0

有时在 R 的 DataFrame 中,我们需要对一些值进行替换。一种常见的替换行为是将 0 替换为 NA。下面是几种实现这种替换的方法。

方法一: ifelse 语句

ifelse 函数在 R 语言中实现 “if-else” 条件语句。

df <- data.frame(x = c(1, 2, 0, 4, 0, 6))
df$x <- ifelse(df$x == 0, NA, df$x)
df

输出结果:

  x
1 1
2 2
3 NA
4 4
5 NA
6 6
方法二: apply() 和 lapply()

apply() 函数很强大,可以对数据矩阵、DataFrame 进行计算和运算。同时,lapply() 也是一个很常用的函数,能够将一个函数作用于一个列表上,返回一个包含函数结果的列表。

下面是一个用 lapply() 函数将 0 替换为 NA 的示例:

df <- data.frame(x = c(1, 2, 0, 4, 0, 6))
df[] <- lapply(df, function(x) { 
  x[x==0] <- NA
  return(x)
})
df

输出结果:

  x
1 1
2 2
3 NA
4 4
5 NA
6 6
方法三: dplyr

dplyr 是一组 R 语言的包,最初由 Hadley Wickham 开发,它提供了一个语义清晰、一致和直观的语言,来进行数据转换和操作。

下面是一个使用 dplyr 包的示例:

library(dplyr)
df <- data.frame(x = c(1, 2, 0, 4, 0, 6))
df <- df %>% mutate(x = ifelse(x == 0, NA, x))
df

输出结果:

  x
1 1
2 2
3 NA
4 4
5 NA
6 6

以上三种方法均可对 R DataFrame 中的 0 进行 NA 替换,选择何种方法仍需根据实际情况和个人喜好进行选择。