You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 15:18:04