如何在R中批量生成多分类变量的计数与百分比统计表
批量生成分类变量计数与占比汇总表
问题背景
目前通过以下代码单独获取单个分类变量的计数与占比:
table(df$var1) table(df$var1)%>% prop.table()
但数据集中包含50余个分类变量,手动逐个处理效率极低,需要批量生成包含变量名、分类水平、计数、百分比的标准化汇总表,用于报告输出。
解决方案(R语言实现)
1. 加载依赖包
需要用到dplyr、tidyr和purrr进行数据处理,若未安装需先运行安装命令:
install.packages(c("dplyr", "tidyr", "purrr", "knitr"))
加载包:
library(dplyr) library(tidyr) library(purrr) library(knitr)
2. 批量处理分类变量
以下代码会自动识别数据框中的分类变量(因子/字符型),批量生成计数与占比汇总表:
# 筛选所有分类变量列名 cat_vars <- df %>% select(where(is.factor) | where(is.character)) %>% colnames() # 遍历生成汇总表 summary_table <- map_dfr(cat_vars, function(var) { table(df[[var]]) %>% as.data.frame(stringsAsFactors = FALSE) %>% rename(分类水平 = Var1, 计数 = Freq) %>% mutate( 百分比 = round((计数 / sum(计数)) * 100, 2), # 保留2位小数 变量名 = var ) %>% select(变量名, 分类水平, 计数, 百分比) })
3. 输出报告用表格
用kable函数生成美观的可直接用于报告的表格:
kable(summary_table, caption = "分类变量计数与占比汇总表", align = "cccc")
补充说明
- 若需调整百分比小数位数,修改
round函数的第二个参数即可; - 若数据中存在缺失值,可在
table函数中添加useNA = "ifany"参数,将缺失值纳入统计; - 输出的
summary_table为数据框格式,可直接导出为Excel文件:writexl::write_xlsx(summary_table, "分类变量汇总表.xlsx")
内容的提问来源于stack exchange,提问作者Rakesh Chand
相关产品推荐
相关产品推荐

