r - 如何仅获取具有 NA 值和 NA 数量的列
问题描述
我有一个数据集,其中一些列具有 NA 值。我只需要显示具有 NA 值的列名以及每个列中 NA 值的总数。我已经能够解决问题的不同部分,但不能同时解决这两个问题。
这仅给了我包含 NA 值的列的列名。但我希望 NA 总数显示在每个列名下。
nacol<- colnames(df)[colSums(is.na(df)) > 0]
这正是我想要的,但它也显示了数据框中其他列的总数为零,我不希望显示这些。
df %>% summarise_all(funs(sum(is.na(.))))
我显然是一个完整的初学者。我意识到这是一个非常容易解决的问题,但我已经尝试了几个小时,我只是感到沮丧。请帮忙。谢谢!
解决方案
我们可以使用Filter
withcolSums
删除 0 值
Filter(function(x) x > 0, colSums(is.na(df)))
#a c
#2 1
或select_if
在dplyr
library(dplyr)
df %>%
summarise_all(~(sum(is.na(.)))) %>%
select_if(. > 0)
我们也可以先选择具有any
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))
推荐阅读
- swift - 字符串中带有双引号的 Alamofire 请求参数
- powershell - PowerShell十进制数排序问题
- out-of-memory - Azure 函数主机因 OutOfMemoryException 而死,但未触发
- reactjs - 同一域但路径不同的不同单页应用程序
- sql - 如何选择未超过不同列的多个值的记录
- nunit - 如何将数据库连接字符串传递给 TeamCity 上的 NUnit 跑步者?
- php - 为什么计数参数在 Windows 中有效但在 linux 中无效
- java - 不要在 Java JDBC 连接中分段标志
- ansible - Ansible 角色可以包含 Python 代码,例如辅助方法吗?
- php - 如何使 vue-router 模式历史记录与 laravel 路由一起使用