我想在一个数据帧列中计算NA值的数量。假设我的数据帧称为df,我正在考虑的列的名称是col。我提出的方法如下:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
这是一个好的/最有效的方法吗?
我想在一个数据帧列中计算NA值的数量。假设我的数据帧称为df,我正在考虑的列的名称是col。我提出的方法如下:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
这是一个好的/最有效的方法吗?
当前回答
类似于hute37的答案,但使用了purrr包。我认为这种tidyverse方法比AbiK提出的答案更简单。
library(purrr)
map_dbl(df, ~sum(is.na(.)))
注意:波浪号(~)创建一个匿名函数。还有'。’指的是匿名函数的输入,在本例中为data.frame df。
其他回答
如果您希望计算整个数据帧中的NAs数量,也可以使用
sum(is.na(df))
如果你在一个数据帧中寻找每一列的NA计数,那么:
na_count <-sapply(x, function(y) sum(length(which(is.na(y)))))
应该会给你一个包含每列计数的列表。
na_count <- data.frame(na_count)
应该像这样在数据框架中输出数据:
----------------------
| row.names | na_count
------------------------
| column_1 | count
如果你在每一列中寻找空值,然后一个接一个地打印,那么你可以使用这个。简单的解决方案。
lapply(df, function(x) { length(which(is.na(x)))})
为了保证完整性,你也可以在table中使用useNA参数。例如table(df$col, useNA="always")将统计所有非NA的情况和NA的情况。
这个表格与凯文·奥戈洛斯的表格略有不同:
na_count <-function (x) sapply(x, function(y) sum(is.na(y)))
返回命名为int数组的NA计数