R 如何仅获取具有NA值和NAs数量的列
我有一个数据集,有些列有NA值。我只需要显示具有NA值的列名以及每个列中NA值的总数。 我能够解决不同的问题,但不能同时解决这两个问题 这只提供包含NA值的列的列名。但我希望NA总数显示在每个列名下R 如何仅获取具有NA值和NAs数量的列,r,R,我有一个数据集,有些列有NA值。我只需要显示具有NA值的列名以及每个列中NA值的总数。 我能够解决不同的问题,但不能同时解决这两个问题 这只提供包含NA值的列的列名。但我希望NA总数显示在每个列名下 nacol<- colnames(df)[colSums(is.na(df)) > 0] 我显然是个十足的初学者。我意识到这是一个非常容易解决的问题,但我已经尝试了几个小时,我只是感到沮丧。请帮忙。谢谢大家! 我们可以使用Filter和colSums删除0个值 Filter(funct
nacol<- colnames(df)[colSums(is.na(df)) > 0]
我显然是个十足的初学者。我意识到这是一个非常容易解决的问题,但我已经尝试了几个小时,我只是感到沮丧。请帮忙。谢谢大家! 我们可以使用
Filter
和colSums
删除0个值
Filter(function(x) x > 0, colSums(is.na(df)))
#a c
#2 1
或者在dplyr
library(dplyr)
df %>%
summarise_all(~(sum(is.na(.)))) %>%
select_if(. > 0)
我们还可以首先选择带有任意NA
值的列,然后对它们进行计数
df %>%
select_if(~any(is.na(.))) %>%
summarise_all(~(sum(is.na(.))))
数据
df <- data.frame(a = c(2, 3, NA, NA, 1), b = 1:5, c = c(1, 3, 4, NA, 1))
df <- data.frame(a = c(2, 3, NA, NA, 1), b = 1:5, c = c(1, 3, 4, NA, 1))
df使用管道的purr
和dplyr
的可能替代方案(使用空气质量进行再现):
使用@Ronak Shah答案中的数据:
df %>%
keep(~anyNA(.x)) %>%
map_dbl(~sum(is.na(.x)))
a c
2 1
使用data.table
(可能有一种方法可以使其更紧凑):
数据:
df我们能做什么
na.omit(na_if(colSums(is.na(df)), 0))
# a c
# 2 1
或者如果
library(dplyr)
df %>%
summarise_if(~ any(is.na(.)), ~sum(is.na(.)))
# a c
#1 2 1
数据
df
df <- structure(list(a = c(2, 3, NA, NA, 1), b = 1:5, c = c(1, 3, 4,
NA, 1)), class = "data.frame", row.names = c(NA, -5L))
airquality is builtin
na.omit(na_if(colSums(is.na(df)), 0))
# a c
# 2 1
library(dplyr)
df %>%
summarise_if(~ any(is.na(.)), ~sum(is.na(.)))
# a c
#1 2 1
df <- data.frame(a = c(2, 3, NA, NA, 1), b = 1:5, c = c(1, 3, 4, NA, 1))