【发布时间】:2019-04-16 12:22:23
【问题描述】:
我找不到任何类似的问题,尽管我怀疑以前没有发布过。我的问题与 Calculate using dplyr, percentage of NA'S in each column.
在每个受试者有多个观察值的数据集中,不仅可以计算缺失数据条目的总数(即每列的总 NA),还可以计算 有多少 受试者的缺失数据某种。
例如,在数据集中 db(见下文)item_1 缺少 2 个主题,item_2 缺少 1 个主题。
编辑 1: 我感兴趣的是每个项目有多少受试者(任何)缺失值。即使在
item_2中,对于 1 号主题有两个缺失的观测值,这也应该算作 1,因为它仍然是同一个主题。
library("dplyr")
db <- data.frame(
subject = c(1, 1, 1, 2),
item_1 = c(NA, 2, 3, NA),
item_2 = c(1, NA, NA, 4)
)
db
#> subject item_1 item_2
#> 1 1 NA 1
#> 2 1 2 NA
#> 3 1 3 NA
#> 4 2 NA 4
到目前为止,我的方法是将 cbind 的所有单个计算合并到一个新的 data.frame 中,但这很快就会变得混乱(列更多)并且肯定编码不好。
编辑 1:但是,这显示了所需的值,因为
item_1缺少两个主题(1 和 2),而 item_2 仅缺少 1 个主题(主题 2)。
cbind(
db %>%
filter(is.na(item_1)) %>%
summarise(na_item_1 = n_distinct(subject)),
db %>%
filter(is.na(item_2)) %>%
summarise(na_item_2 = n_distinct(subject))
)
#> na_item_1 na_item_2
#> 1 2 1
问题:dplyr 中是否有计算方法?
理想情况下,我还想在某处添加缺失比例(如下例所示):
data.frame(
type = c("n", "proportion"),
na_item_1 = c(2, 1.0),
na_item_2 = c(1, 0.5)
)
#> type na_item_1 na_item_2
#> 1 n 2.0 1.0
#> 2 proportion 1.0 0.5
由reprex package (v0.2.1) 于 2019-04-16 创建
提前致谢!
【问题讨论】:
-
为什么 item_2 有 1 个缺失值?
-
这是关于主题而不是价值观。我的意思是 item_2 缺少 1 个主题(主题号 2)的值。我会尽量在帖子中更清楚地说明这一点。
-
感谢您指出@RonakShah。这是错误的。它应该是 1.0,因为 2 个主题中有 2 个在
item_1中缺失。有问题已更正。