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

如何用R语言生成含计数、百分比及均值的汇总报告?

R语言计算因子变量的百分比与均值方法

1. 基于summary结果计算百分比

你已经用summary(EEB$PBDplanet_import)拿到了各因子水平的计数,直接结合总样本量就能算出百分比:

# 提取各水平计数
factor_counts <- summary(EEB$PBDplanet_import)
# 计算百分比(保留2位小数)
factor_pct <- round(factor_counts / nrow(EEB) * 100, 2)
# 合并计数与百分比展示
cbind(计数 = factor_counts, 百分比 = paste0(factor_pct, "%"))

2. 用table+prop.table快速生成百分比表

table函数更直观生成频数表,搭配prop.table直接转换为比例:

# 生成频数表
freq_table <- table(EEB$PBDplanet_import)
# 转换为百分比
pct_table <- prop.table(freq_table) * 100
# 合并输出
cbind(频数 = freq_table, 百分比 = round(pct_table, 2))

3. 计算因子变量的均值

因子变量无法直接计算均值,需要先转换为数值型(前提是因子水平具备数值意义,比如"0"/"1"或有序分类):

  • 如果因子水平是字符串形式的数字(如"0"、"1"):
# 先转字符再转数值,避免因子水平自动编码为1、2...
EEB$PBD_num <- as.numeric(as.character(EEB$PBDplanet_import))
# 计算均值(忽略缺失值)
mean_val <- mean(EEB$PBD_num, na.rm = TRUE)
cat("均值:", round(mean_val, 2), "\n")
  • 如果是有序分类(如"低"/"中"/"高"),手动映射数值:
# 需要先加载dplyr包
library(dplyr)
EEB$PBD_num <- recode(EEB$PBDplanet_import, "低"=1, "中"=2, "高"=3)
mean_val <- mean(EEB$PBD_num, na.rm = TRUE)
cat("均值:", round(mean_val, 2), "\n")

4. 用dplyr一键生成完整描述统计

如果需要批量生成统计结果,dplyr的分组统计更高效:

# 未安装dplyr先执行:install.packages("dplyr")
library(dplyr)

EEB %>%
  # 转换因子为数值
  mutate(PBD_num = as.numeric(as.character(PBDplanet_import))) %>%
  # 按因子水平分组
  group_by(PBDplanet_import) %>%
  summarise(
    计数 = n(),
    百分比 = round(n() / nrow(EEB) * 100, 2),
    组内均值 = mean(PBD_num, na.rm = TRUE)
  ) %>%
  # 添加整体统计行
  add_row(
    PBDplanet_import = "整体",
    计数 = nrow(EEB),
    百分比 = 100,
    组内均值 = mean(.$PBD_num, na.rm = TRUE)
  )

内容的提问来源于stack exchange,提问作者Erin Bergquist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:40:27