如何为R语言生成的列表式频次表添加各类别百分比行
问题场景
现有包含3个分类变量的数据框,通过以下代码做单变量频次统计:
df = data_frame(merged$arrears, merged$mortgage_type, merged$occupancy) apply(df, 2, table)
运行后得到列表结构的频次统计结果:
## $`merged$arrears` ## ## 0 1 2 3 4 ## 52124 5523 2371 1538 27 ## ## $`merged$mortgage_type` ## ## bullet erm linear ## 19958 17326 18181 ## ## $`merged$occupancy` ## ## btl holiday home owner occupied ## 12296 27996 13112
需要给列表中每个频次表新增对应类别的百分比占比行。
实现代码
直接遍历统计结果列表,给每个频次表拼接计算好的占比行即可:
# 存储原始频次统计结果 freq_res <- apply(df, 2, table) # 批量追加百分比行 freq_with_pct <- lapply(freq_res, function(x){ # 计算各分类百分比,可按需调整保留小数位数 pct_val <- round(prop.table(x)*100, 2) rbind( 计数 = x, 占比(%) = pct_val ) })
运行后单个变量的输出效果参考:
## $`merged$arrears` ## 0 1 2 3 4 ## 计数 52124 5523.0 2371.0 1538.0 27.00 ## 占比(%) 84.69 8.98 3.85 2.44 0.04
如果需要输出带%符号的格式化占比,把占比计算部分替换为如下代码即可:
pct_val <- paste0(round(prop.table(x)*100, 2), "%")
对应输出效果:
## $`merged$arrears` ## 0 1 2 3 4 ## 计数 "52124" "5523" "2371" "1538" "27" ## 占比(%) "84.69%" "8.98%" "3.85%" "2.44%" "0.04%"
内容的提问来源于stack exchange,提问作者Saïd Maanan
相关产品推荐
相关产品推荐

