我想把所有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的一部分进行操作?
c6ubokkw1#
您应该在两个df调用上执行子集设置:
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
yeotifhr2#
dplyr选项使用across和replace,如下所示:
dplyr
across
replace
df <- data.frame(replicate(100,sample(0:9,1000,rep=TRUE))) library(dplyr) df %>% mutate(across(5:100, ~ replace(.x, .x == 0, NA)))
2条答案
按热度按时间c6ubokkw1#
您应该在两个
df
调用上执行子集设置:举个小例子:
yeotifhr2#
dplyr
选项使用across
和replace
,如下所示: