【发布时间】:2020-01-08 21:49:04
【问题描述】:
标题是不言自明的。希望在 R 中按 ID 组计算 NA 百分比。有很多关于按变量列计算 NA 的帖子,但几乎没有按行组计算。
【问题讨论】:
标签: r na missing-data
标题是不言自明的。希望在 R 中按 ID 组计算 NA 百分比。有很多关于按变量列计算 NA 的帖子,但几乎没有按行组计算。
【问题讨论】:
标签: r na missing-data
如果有多个列,按'ID'分组后,使用summarise_at循环列,用is.na创建一个逻辑向量,得到mean,然后乘以100
library(dplyr)
df1 %>%
group_by(ID) %>%
summarise_at(vars(-group_cols()), ~ 100 *mean(is.na(.)))
如果我们想获得所有其他变量的百分比,
library(tidyr)
df1 %>%
pivot_longer(cols = -ID) %>%
group_by(ID) %>%
summarise(Perc = 100 * mean(is.na(value)))
或者用aggregate 来自base R
aggregate(.~ ID, df1, FUN = function(x) 100 * mean(is.na(x)), na.action = na.pass)
或者获取百分比,然后unlist,其他列,创建一个带有逻辑向量和“ID”列的table,并使用prop.table获取百分比
prop.table(table(cbind(ID = df1$ID,
value = is.na(unlist(df1[setdiff(names(df1), "ID")]))))
【讨论】:
dput更新你的帖子可能会更好