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

使用R的kable生成多变量频数百分比表格并导出至Word

多变量回答分布表格解决方案

要实现将多个rating变量整合到同一表格,左侧显示变量名、右侧对应5种回答的频数(n)和百分比(%)的布局,可以按以下步骤操作:

步骤1:数据预处理

首先清理回答文本中的多余空格(避免因空格导致的类别不一致),并定义所有可能的回答选项(确保统计时覆盖所有类别):

library(tidyr)
library(knitr)
library(tidyverse)

# 清理回答字段的首尾空格
df_clean <- df %>%
  mutate(across(everything(), str_trim))

# 定义所有回答选项的固定顺序
response_levels <- c("Very important", "Important", "Neutral", "Unimportant", "Very unimportant")

步骤2:批量统计频数与百分比

将宽格式数据转为长格式,批量计算每个变量下各回答的频数和百分比:

long_df <- df_clean %>%
  # 转长格式:变量名一列,回答内容一列
  pivot_longer(cols = everything(), names_to = "variable", values_to = "response") %>%
  # 把回答转为因子,确保按预设顺序排列
  mutate(response = factor(response, levels = response_levels)) %>%
  # 按变量+回答分组统计频数
  group_by(variable, response) %>%
  summarise(n = n(), .groups = "drop") %>%
  # 按变量分组计算百分比
  group_by(variable) %>%
  mutate(percent = round(100 * n / sum(n), 1)) %>%
  ungroup()

步骤3:转换为目标宽格式布局

将长格式数据转回宽格式,让每个回答的n和%作为独立列:

wide_df <- long_df %>%
  pivot_wider(
    id_cols = variable,
    names_from = response,
    values_from = c(n, percent),
    # 列名格式:回答内容_统计类型(n/percent)
    names_glue = "{response}_{.value}"
  ) %>%
  # 补充缺失回答的0值(比如某变量没有"Very important"回答时填0)
  mutate(across(contains(response_levels), ~replace_na(., 0))) %>%
  # 按预设的回答顺序排列列,匹配目标布局
  select(
    variable,
    paste0(response_levels, "_n"),
    paste0(response_levels, "_percent")
  )

步骤4:添加总计行并生成表格

添加Total行汇总所有变量的频数,最后用kable生成可导出Word的表格:

final_df <- wide_df %>%
  add_row(
    variable = "**Total**",
    # 汇总所有n列的数值,百分比列统一设为100%
    !!!map_dfc(select(wide_df, -variable), ~ifelse(str_detect(colnames(.), "_n"), sum(.), 100))
  )

# 生成表格,设置对齐方式和列名
final_df %>%
  kable(
    align = "lcccccccccc", # 11列:1个变量列 + 5组n/%列
    col.names = c(
      "**变量**",
      "非常重要(n)", "重要(n)", "中立(n)", "不重要(n)", "非常不重要(n)",
      "非常重要(%)", "重要(%)", "中立(%)", "不重要(%)", "非常不重要(%)"
    ),
    caption = "各变量回答分布统计"
  )

说明

  • 处理后的表格可直接通过RStudio的"导出"功能或knitr::pandoc_convert转为Word文档。
  • 所有预设的回答选项都会被包含,即使某变量没有对应回答,频数会显示为0,百分比显示为0.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:23:14