我试图用0填充数据中的所有NAs。有没有人知道如何使用tidyr的replace_na做到这一点?从文档中,我们可以轻松地用不同的值替换不同列中的NA。但是如何用一些价值取代所有这些呢?我有很多专栏......
以mtcars数据集为例:
mtcars [sample(1:nrow(mtcars), 4), sample(1:ncol(mtcars), 4)]<- NA
mtcars %>% replace_na( ??? )
答案 0 :(得分:33)
如果replace_na不是强制性要求,则以下代码将起作用:
mtcars %>% replace(is.na(.), 0)
答案 1 :(得分:4)
我找到了一种方法让它按照要求使用replace_na
(因为它是通过microbenchmark测试的最快选项):
library(tidyr)
library(dplyr)
# First, create a list of all column names and set to 0
myList <- setNames(lapply(vector("list", ncol(mtcars)), function(x) x <- 0), names(mtcars))
# Now use that list in tidyr::replace_na
mtcars %>% replace_na(myList)
要将其应用于您的工作数据框,请务必在创建mtcars
对象时,将myList
的2个实例替换为您命名为工作数据框的任何内容。
答案 2 :(得分:1)
library(dplyr)
mydata <- mtcars
mydata[sample(1:nrow(mydata), 4), sample(1:ncol(mydata), 4)]<- NA
mydata %>% mutate_each(funs(replace(., is.na(.), 0)))