如何获得r中具有NA的列的计数

  • 本文关键字:NA 何获得 r count null na
  • 更新时间 :
  • 英文 :


我有一个列超过1000的数据集。现在我知道有很多列的所有条目都是NA。我想知道有多少列是NA。例如,如果有100列具有NA值,我希望输出为100。我研究了很多网站以找到答案,但没有任何帮助。这就是我尝试过的。

colnames(data)[colSums(is.na(data)) > 0]

但这会把所有的专栏都还给我。但我只想要伯爵。

是运行的基础

sum(sapply(data, function(col) any(is.na(col)))

(适用于例如data.frames(。sapply返回一个布尔值向量,例如三列data.frame的[1] True False True,其中有两列缺少值。布尔值转换为可以求和的1。


如果data是矩阵,则用sapply代替apply并执行

sum(apply(as.matrix(a), 2, function(col) any(is.na(col))))

编辑再次阅读OP的问题后,我意识到OP想要列中包含所有NA的列。这可以通过用any代替all来获得,即

sum(sapply(data, function(col) all(is.na(col))))

尝试:

sum(colSums(is.na(data)) == nrow(data))
#[1] 2

或者相反的

sum(colSums(!is.na(data)) == 0)

您也可以使用Filter

length(Filter(function(x) all(is.na(x)), data))

或使用dplyr:

library(dplyr)
data %>% select_if(~all(is.na(.))) %>% ncol

数据

data <- data.frame(a = c(1, 2, NA, 4), b = NA, c = letters[1:4], d = NA)

要获得包含NA的列数,可以使用colSumssum:

sum(colSums(is.na(data)) > 0)

为了获得仅包含NA的列数,我将使用@ronak shah(sum(colSums(!is.na(data)) == 0)(的解决方案

我猜你可以使用这个:

library(DataExplorer)
plot_missing(iris) #this will print all the missing values in the plot 
profile_missing(iris) #this will print all the missing values columns with numbers like this 

输出结果

一旦您在数据帧中获得它们,keep columns>0,您将获得具有NA的列的列表。

相关内容

  • 没有找到相关文章

最新更新