本文介绍了如何在20列中用0代替NA?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用20列中的0代替NA.我发现这种方法适用于2列,但是如果列数为20,那不是最佳选择.是否有其他替代方法和更紧凑的解决方案?
I want to substitute NA by 0 in 20 columns. I found this approach for 2 columns, however I guess it's not optimal if the number of columns is 20. Is there any alternative and more compact solution?
mydata[,c("a", "c")] <-
apply(mydata[,c("a","c")], 2, function(x){replace(x, is.na(x), 0)})
更新:为简单起见,让我们用8列获取此数据,并在b,c,e,f和d列中替换NAs
UPDATE:For simplicity lets take this data with 8 columns and substitute NAs in columns b, c, e, f and d
a b c d e f g d
1 NA NA 2 3 4 7 6
2 g 3 NA 4 5 4 Y
3 r 4 4 NA t 5 5
结果必须是这个:
a b c d e f g d
1 0 0 2 3 4 7 6
2 g 3 NA 4 5 4 Y
3 r 4 4 0 t 5 5
推荐答案
我们可以使用qdap
中的NAer
将NA转换为0.如果有多列,请使用lapply
循环.
We can use NAer
from qdap
to convert the NA to 0. If there are multiple column, loop using lapply
.
library(qdap)
nm1 <- c('b', 'c', 'e', 'f')
mydata[nm1] <- lapply(mydata[nm1], NAer)
mydata
# a b c d e f g d.1
#1 1 0 0 2 3 4 7 6
#2 2 g 3 NA 4 5 4 Y
#3 3 r 4 4 0 t 5 5
或使用dplyr
library(dplyr)
mydata %>%
mutate_each_(funs(replace(., which(is.na(.)), 0)), nm1)
# a b c d e f g d.1
#1 1 0 0 2 3 4 7 6
#2 2 g 3 NA 4 5 4 Y
#3 3 r 4 4 0 t 5 5
这篇关于如何在20列中用0代替NA?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!