确定列中的NA值的数量

时间:2014-06-04 01:29:02

标签: r dataframe

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

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

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

16 个答案:

答案 0 :(得分:271)

你过度思考这个问题:

sum(is.na(df$col))

答案 1 :(得分:69)

如果您要查找数据框中每列的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

答案 2 :(得分:25)

尝试colSums功能

df <- data.frame(x = c(1,2,NA), y = rep(NA, 3))

colSums(is.na(df))

#x y 
#1 3 

答案 3 :(得分:16)

如果您想要计算整个数据帧中的NA数量,您也可以使用

sum(is.na(df))

答案 4 :(得分:12)

summary()输出中,该函数还会对NA进行计数,因此如果需要多个变量中的NA之和,则可以使用此函数。

答案 5 :(得分:10)

计算数据帧每列中空值数的一种整合方式:

library(tidyverse)
library(purrr)

df %>%
    map_df(function(x) sum(is.na(x))) %>%
    gather(feature, num_nulls) %>%
    print(n = 100)

答案 6 :(得分:7)

此表格略微改变了Kevin Ogoros的一个:

na_count <-function (x) sapply(x, function(y) sum(is.na(y)))

将NA计数返回为命名的int数组

答案 7 :(得分:3)

用户rrs的回答是正确的,但这只会告诉您传递的数据帧的特定列中的NA值的数量,以获得整个数据帧的NA值的数量,请尝试:

apply(<name of dataFrame>, 2<for getting column stats>, function(x) {sum(is.na(x))})

这就是诀窍

答案 8 :(得分:2)

试试这个:

length(df$col[is.na(df$col)])

答案 9 :(得分:2)

我从本地目录中读取了 csv 文件。以下代码适合我。

# to get number of which contains na
sum(is.na(df[, c(columnName)]) # to get number of na row

# to get number of which not contains na
sum(!is.na(df[, c(columnName)]) 

#here columnName is your desire column name

答案 10 :(得分:2)

一种快速简便的Tidyverse解决方案来获取所有列的NA计数是使用summarise_all(),我认为这比使用purrr或{{1 }}

sapply

答案 11 :(得分:2)

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

答案 12 :(得分:1)

类似于hute37的答案,但使用purr库。我认为这种整理方法比AbiK提出的答案更简单。

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

注意:tilda创建一个匿名函数。还有“。”指匿名功能的输入。在这种情况下,data.frame df。

答案 13 :(得分:1)

如果您要在每一列中查找要一个接一个打印的空值,那么您可以使用它。简单的解决方案。

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

答案 14 :(得分:0)

您可以使用它来计算每列中NA或空白的数量

colSums(is.na(data_set_name)|data_set_name == '')

答案 15 :(得分:0)

为了完整起见,您还可以在表中使用 useNA 参数。例如,table(df$col, useNA="always") 将计算所有非 NA 情况和 NA 情况。