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

大学作业复刻期刊表格:如何生成目标百分比统计表格?

生成期刊风格描述性百分比表格的实现方法

以下是几种在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:00:30