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

如何对R数据框中所有分类变量批量生成频数及百分比统计表格

实现方案

你可以结合dplyr和purrr包的函数实现批量统计,以下是两种可直接运行的方案:

方案1:返回命名列表,每个元素对应单个分类变量的统计结果

library(tidyverse)

# 第一步:筛选所有分类变量
factor_vars <- Chap3 %>% select(where(is.factor)) %>% names()

# 第二步:批量遍历每个分类变量生成统计表格
freq_tables <- map(set_names(factor_vars), function(var) {
  Chap3 %>% 
    count(.data[[var]]) %>% 
    mutate(percent = round(n / sum(n) * 100, 1))
})

# 调用方法:查看bsex的结果直接输入 freq_tables$bsex 即可

这里用.data[[var]]是标准求值写法,解决循环中变量名的识别问题,就是你之前批量操作失效的核心原因:直接传变量名字符串时dplyr默认会当成普通值处理,不会解析为数据框的列。

方案2:返回合并总表,所有变量的统计结果汇总展示

如果需要把所有结果整合到同一个数据框里方便导出,可以用长表转换的方法:

library(tidyverse)

all_freq <- Chap3 %>%
  # 只保留分类变量,转换为长表
  select(where(is.factor)) %>% 
  pivot_longer(cols = everything(), names_to = "变量名", values_to = "分类取值") %>% 
  # 按变量+分类分组统计
  count(变量名, 分类取值) %>% 
  group_by(变量名) %>% 
  mutate(percent = round(n / sum(n) * 100, 1)) %>% 
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:27:03