我想在一个数据帧列中计算NA值的数量。假设我的数据帧称为df,我正在考虑的列的名称是col。我提出的方法如下:

sapply(df$col, function(x) sum(length(which(is.na(x)))))  

这是一个好的/最有效的方法吗?


当前回答

如果你在每一列中寻找空值,然后一个接一个地打印,那么你可以使用这个。简单的解决方案。

lapply(df, function(x) { length(which(is.na(x)))})

其他回答

为了保证完整性,你也可以在table中使用useNA参数。例如table(df$col, useNA="always")将统计所有非NA的情况和NA的情况。

类似于hute37的答案,但使用了purrr包。我认为这种tidyverse方法比AbiK提出的答案更简单。

library(purrr)
map_dbl(df, ~sum(is.na(.)))

注意:波浪号(~)创建一个匿名函数。还有'。’指的是匿名函数的输入,在本例中为data.frame df。

sapply(name of the data, function(x) sum(is.na(x)))

如果你在每一列中寻找空值,然后一个接一个地打印,那么你可以使用这个。简单的解决方案。

lapply(df, function(x) { length(which(is.na(x)))})

另一个选项使用complete。这样的案例:

df <- data.frame(col = c(1,2,NA))
df
#>   col
#> 1   1
#> 2   2
#> 3  NA
sum(!complete.cases(df$col))
#> [1] 1

于2022-08-27使用reprex v2.0.2创建