缺失值的汇总统计数据除以 class

Summary stats for missing values split by class

这是我的数据框:

x1 <- as.numeric(c(1.5, 3.2, 5.1, 6.6, NA))
x2 <- as.numeric(c(3.4, 5.6, NA, NA, 0.9))
x3 <- as.character(c("abc", NA, "cde", NA, NA))
x4 <- as.logical(c(1, 1, 0, 1, 0))
x5 <- as.integer(c(NA, 2, 4, 7, 9))

df <- data.frame(x1, x2, x3, x4, x5, stringsAsFactors = F)

缺失值的汇总统计(百分比):

summary( round(apply(is.na(df), 2, sum)/(nrow(df)), 4) )

我可以通过 class 提取列并应用摘要统计 4 次以获得唯一 classes:

unique(sapply(df, class))

我想知道是否有一种使用更少代码行的好方法,可以将汇总统计数据放在一个 table 中,由 class 分割?

感谢您的帮助。

非常感谢

拉米

我们split列的序列由'class'的每一列得到一个list,对数据集进行子集化,转换为逻辑矩阵(is.na(df[x])),获取列表示 (colMeans)、round(如有必要)并执行 summary.

lapply(split(seq_along(df), sapply(df, class)), 
   function(x) summary(round(colMeans(is.na(df[x])),4)))