R语言如何按列将数据框/data.table转换为百分比占比表
R批量按列计算百分比占比的方法
方法1:dplyr的across()批量处理(推荐)
适合tidyverse生态使用场景,自动匹配所有数值列,无需手动逐列写代码:
library(dplyr) x_pct <- x %>% # 对除class外的所有数值列执行百分比计算 mutate(across(-class, ~ round(.x / sum(.x) * 100, 2), # 配置新增列的命名规则,删除该参数会直接覆盖原数值列 .names = "{col}_pct"))
运行后生成的结果和手动逐列计算的结果完全一致,支持任意数量的数值列批量处理。
方法2:基础R实现(无需加载第三方包)
用prop.table指定按列计算维度,适合无额外包依赖的场景:
# 提取数值列计算百分比,保留2位小数 pct_cols <- round(prop.table(as.matrix(x[,-1]), margin = 2) * 100, 2) # 重命名列并合并分类列得到最终结果 colnames(pct_cols) <- paste0(colnames(pct_cols), "_pct") x_pct <- cbind(x, pct_cols)
可选配置:添加百分号后缀
如果需要输出带%符号的文本格式,可调整计算逻辑:
x %>% mutate(across(-class, ~ paste0(round(.x / sum(.x) * 100, 2), "%"), .names = "{col}_pct"))
内容的提问来源于stack exchange,提问作者sutsabs
相关产品推荐
相关产品推荐

