如何将 Dataframe 中的所有0值替换为NA,但仅替换部分 Dataframe 中的值?

zlwx9yxi  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(211)

我想把所有0值替换为NA,但只在列的子集中。

df <- data.frame(replicate(100,sample(0:9,1000,rep=TRUE)))

要将整个df中的所有0更改为NA,应使用

df[df == 0] <- NA

但是我只想在列5:100的子集中将0更改为NA,我已经尝试过了
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
但所有这些都返回错误。
如何对df的一部分进行操作?

c6ubokkw

c6ubokkw1#

您应该在两个df调用上执行子集设置:

df[5:100][df[5:100] == 0] <- NA

举个小例子:

set.seed(1)
df <- data.frame(replicate(3,sample(0:9,10,rep=TRUE)))
df[2:3][df[2:3] == 0] <- NA

   X1 X2 X3
1   8  4  4
2   3  9  4
3   6  5  1
4   0  9  9
5   1  6  8
6   6  8 NA
7   1  4  3
8   2  4  2
9   0  8  5
10  4  8  9
yeotifhr

yeotifhr2#

dplyr选项使用acrossreplace,如下所示:

df <- data.frame(replicate(100,sample(0:9,1000,rep=TRUE)))

library(dplyr)
df %>%
  mutate(across(5:100, ~ replace(.x, .x == 0, NA)))

相关问题