我有一个数据帧和一些列有NA值。

我如何将这些NA值替换为零?


当前回答

我知道这个问题已经有了答案,但这样做可能对一些人更有用:

定义这个函数:

na.zero <- function (x) {
    x[is.na(x)] <- 0
    return(x)
}

现在,无论何时你需要将向量中的NA转换为0,你可以这样做:

na.zero(some.vector)

其他回答

我个人用过,效果很好:

players_wd$APPROVED_WD[is.na(players_wd$APPROVED_WD)] <- 0

这并不是一个新的解决方案,但是我喜欢编写内联lambdas来处理我无法让包完成的事情。在这种情况下,

df %>%
   (function(x) { x[is.na(x)] <- 0; return(x) })

因为R不像你在Python中可能看到的那样“通过对象传递”,所以这个解决方案不会修改原始变量df,因此与大多数其他解决方案一样,但是不需要对特定包的复杂知识有太多的要求。

注意函数定义周围的括号!虽然对我来说这似乎有点多余,因为函数定义是用花括号括起来的,但对于magrittr,需要在括号内定义内联函数。

要替换一个数据帧中的所有NAs,你可以使用:

Df %>% replace(is.na(.), 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`

取代。数据帧中的na和NULL。

带列的数据帧

A name(美元是na (A name) < 0美元。

OR

A $ name[是na (A $ name) < - " na "

所有数据帧

自由度[is.na(DF)]<-0

将数据帧中的na替换为空白

df[is.na(df)]<-“”

将NULL替换为NA

df[is.null(df)] <- NA