大学作业复刻期刊表格:如何生成目标百分比统计表格?
生成期刊风格描述性百分比表格的实现方法
以下是几种在R中生成符合学术期刊格式的百分比表格的具体方案,适配你已完成的数据清洗流程:
1. 基础单变量百分比计算(dplyr + kable)
针对单个心理症状变量,计算各选项的频数与百分比,结果直接输出为表格:
library(dplyr) library(knitr) # 以"感受压力"变量为例 d %>% drop_na(bghqe) %>% # 剔除该变量的缺失值,或替换为na.omit(d)用全量清洗后的数据 count(bghqe) %>% mutate(percent = round(100 * n / sum(n), 1)) %>% # 保留1位小数的百分比 kable(col.names = c("感受压力程度", "频数", "百分比(%)"))
2. 批量处理多变量(purrr + dplyr)
一次性生成所有6个心理症状变量的百分比表格,自动匹配变量标签:
library(purrr) # 定义需要处理的变量列表 symptom_vars <- c("bghqe", "bghqj", "bghqk","bghqg","bghqh","bghql") # 批量生成合并表格 map(symptom_vars, function(var) { d %>% drop_na(!!sym(var)) %>% count(!!sym(var)) %>% mutate(percent = round(100 * n / sum(n), 1)) %>% rename(症状等级 = !!sym(var)) %>% mutate(症状描述 = case_when( var == "bghqe" ~ "Feeling under strain", var == "bghqj" ~ "Losing confidence", var == "bghqk" ~ "Thinking of being a worthless person", var == "bghqg" ~ "Been less able to enjoy day-to-day activities", var == "bghqh" ~ "Been less able to face up to problems", var == "bghql" ~ "Feeling less happy" )) %>% select(症状描述, 症状等级, n, percent) }) %>% bind_rows() %>% kable(col.names = c("症状描述", "症状等级", "频数", "百分比(%)"))
3. 用janitor包快速生成专业表格
janitor的tabyl函数专门用于生成统计表格,内置百分比格式化功能,适配学术需求:
library(janitor) # 生成单个变量的频数-百分比表格 d %>% drop_na(bghqe) %>% tabyl(bghqe) %>% adorn_pct_formatting(digits = 1) %>% # 设置百分比小数位数 kable(col.names = c("感受压力程度", "频数", "百分比")) # 生成多变量横向汇总表格(期刊常见格式) d %>% select(all_of(symptom_vars)) %>% na.omit() %>% # 全量清洗后的数据 tabyl(everything()) %>% adorn_totals("row") %>% # 添加总计行 adorn_pct_formatting(digits = 1) %>% kable()
4. 用gtsummary生成期刊级规范表格
gtsummary专为学术表格设计,支持自动统计量计算、格式美化,可直接导出为LaTeX/HTML:
library(gtsummary) # 生成带频数、百分比的描述性表格 d %>% select(all_of(symptom_vars)) %>% na.omit() %>% tbl_summary( type = all_categorical() ~ "categorical", statistic = all_categorical() ~ "{n} ({p}%)" # 定义统计量显示格式 ) %>% modify_header(label = "心理症状指标") %>% modify_caption("表1:各心理症状的分布情况") %>% as_kable() # 转换为kable格式输出
关于prop.table的正确用法
你之前用round(100*prop.table)未得到预期结果,大概率是未明确计算维度。正确用法需先将变量转为频数表,再指定计算比例的维度:
# 计算单个变量的整体百分比 freq_tab <- table(d$bghqe, useNA = "no") # 排除缺失值 percent_tab <- round(100 * prop.table(freq_tab), 1) cbind(频数 = freq_tab, 百分比 = percent_tab) %>% kable()
内容的提问来源于stack exchange,提问作者tm575
相关产品推荐
相关产品推荐

