我有一个数据帧和一些列有NA值。
我如何将这些NA值替换为零?
我有一个数据帧和一些列有NA值。
我如何将这些NA值替换为零?
当前回答
如果我们试图在导出时替换NAs,例如写入csv时,那么我们可以使用:
write.csv(data, "data.csv", na = "0")
其他回答
另一个使用imputeTS包的例子:
library(imputeTS)
na.replace(yourDataframe, 0)
这是一个更灵活的解决方案。不管你的数据帧有多大,它都能工作,或者用0或0来表示0。
library(dplyr) # make sure dplyr ver is >= 1.00
df %>%
mutate(across(everything(), na_if, 0)) # if 0 is indicated by `zero` then replace `0` with `zero`
不需要使用任何库。
df <- data.frame(a=c(1,3,5,NA))
df$a[is.na(df$a)] <- 0
df
我知道这个问题已经有了答案,但这样做可能对一些人更有用:
定义这个函数:
na.zero <- function (x) {
x[is.na(x)] <- 0
return(x)
}
现在,无论何时你需要将向量中的NA转换为0,你可以这样做:
na.zero(some.vector)
如果我们试图在导出时替换NAs,例如写入csv时,那么我们可以使用:
write.csv(data, "data.csv", na = "0")