r - 我正在尝试识别数据集行中缺失值的模式
问题描述
我正在尝试查找行中缺失值的模式。
例如,如果我有这个数据集:
a b c d
1 0.1 NA NA
2 NA 3 4
5 NA 6 NA
我希望输出是:
n a b c d m
1 0 0 1 1 2
1 0 1 0 0 1
1 0 1 0 1 2
其中n列表示m列缺失值的行数,1表示缺失值(n列和m列除外)。即输出第一行的解释如下:1行缺失2个值用于变量 c 和 d;第二行:变量 b 中的 1 行缺少 1 个值,依此类推。
我曾尝试在 extracat 包(存档版本)中使用 subtable() 函数,但我无法在每个变量中找到缺失值的位置。我只能找到频率。
rowmiss<-rowSums(is.na(dat1[1:ncol(dat1)]))
r1<-matrix(rowmiss, nrow=nrow(dat1))
subtable(rowmiss,1)
我希望输出如上所示。到目前为止,我发现的是行中缺失值的频率,但我期望缺失值的模式和位置。
解决方案
这是一个 tidyverse 方法。该n
专栏似乎是多余的,它应该做其他事情吗?
library(tidyverse)
df %>%
rowid_to_column() %>%
gather(col, val, -rowid) %>%
mutate(val = is.na(val) * 1) %>%
group_by(rowid) %>% mutate(m = sum(val)) %>% ungroup() %>%
spread(col, val) %>%
mutate(n = 1) %>%
select(n, a:d, m)
# A tibble: 3 x 6
n a b c d m
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 0 0 1 1 2
2 1 0 1 0 0 1
3 1 0 1 0 1 2
推荐阅读
- grails - Grails 3.3 字段插件 f:display 可以显示多对多
- javascript - 粘贴数据时没有触发onEdit
- python - 为什么我会收到 PEP 警告,要求我在这种情况下更改我的平等声明?
- javascript - 导航我的网站时,有没有办法阻止我的标题重新呈现?
- ubuntu - 如何将带有系统库的应用程序打包到 AppImage 中
- java - 如何使这个 testNG 测试动态但保持并行
- html - 选中复选框时更改样式 - Vue
- javascript - 烧瓶服务器从 JS 休息调用返回 400 错误代码
- python - 使用 for 循环来分隔表单集
只在表格之间,不在开头或结尾 - javascript - 向迭代器添加“return”方法的 JavaScript 无法正确关闭迭代器