如何计算DataFrame各列NA的绝对数与占比并生成指定结构新表
生成缺失值统计DataFrame
原数据构造代码
col1 <- c("as","df",NA) col2 <- c("ds",NA,NA) col3 <- c(NA,NA,NA) df <- data.frame(col1,col2,col3)
实现代码
# 统计各列缺失值绝对数量 na_absolute <- sapply(df, function(col) sum(is.na(col))) # 计算缺失值占比(转为百分比格式) na_percent <- sapply(df, function(col) mean(is.na(col)) * 100) # 组装成目标DataFrame missing_stats <- data.frame( Field = names(df), Absolute = na_absolute, Percentage = round(na_percent, 2) # 可按需调整保留的小数位数 )
输出结果
运行上述代码后,missing_stats的内容为:
| Field | Absolute | Percentage |
|---|---|---|
| col1 | 1 | 33.33 |
| col2 | 2 | 66.67 |
| col3 | 3 | 100.00 |
代码说明
sapply()用于遍历原DataFrame的每一列,对每列执行缺失值统计:sum(is.na(col))直接统计列中NA的个数mean(is.na(col)) * 100计算NA占该列总行数的百分比(is.na()返回布尔值,转为数值后取均值就是占比)
round()函数用于格式化百分比的小数位数,按需修改即可- 最后通过
data.frame()将列名、绝对数量、占比整合为目标结构
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

