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

如何在R(Studio)中按分组生成Likert量表频数分布表

按Workshop分组生成Likert题项频数分布表的R实现

核心方案

借助tidyverse工具链(尤其是dplyr的分组嵌套和purrr的批量处理),或者基础R循环,针对每个Workshop分组,批量生成对应Likert题项的频数分布表。下面是两种实用方案:

具体代码实现

假设你的数据集名为survey_data,分组变量为Workshop,Likert题项为Q1、Q2、Q3(按需替换为实际列名)

1. 加载依赖包

library(dplyr)
library(janitor) # 快速生成带百分比的美观频数表
library(purrr)
library(knitr) # 用于R Markdown中渲染表格

2. 方案一:Tidyverse批量处理(推荐)

这种方式代码简洁,输出结构清晰,适合后续整理或渲染:

# 定义Likert题项列名,也可用starts_with("Q")自动匹配
likert_cols <- c("Q1", "Q2", "Q3")

# 按Workshop分组生成所有题项的频数表
grouped_freq_tables <- survey_data %>%
  group_by(Workshop) %>%
  nest() %>%
  mutate(
    freq_tables = map(data, ~ map(.x[likert_cols], tabyl, show_missing = TRUE))
  ) %>%
  unnest(freq_tables)

# 查看结果
grouped_freq_tables

如果要在R Markdown中直接渲染成美观的表格:

survey_data %>%
  group_by(Workshop) %>%
  group_walk(function(sub_data, group_info) {
    # 输出分组标题
    cat(paste0("\n### Workshop: ", group_info$Workshop, "\n"))
    # 遍历每个题项生成表格
    map(likert_cols, function(col) {
      sub_data %>%
        tabyl(!!sym(col)) %>%
        adorn_pct_formatting(digits = 1) %>% # 保留1位小数的百分比
        kable(caption = paste("题项", col, "频数分布"))
    }) %>% walk(print)
  })

3. 方案二:基础R循环(无需额外包)

如果不习惯tidyverse,用基础R也能快速实现:

likert_cols <- c("Q1", "Q2", "Q3")
unique_workshops <- unique(survey_data$Workshop)

# 循环遍历每个Workshop
for (ws in unique_workshops) {
  cat(sprintf("\n===== Workshop: %s =====\n", ws))
  # 遍历每个题项生成频数表
  for (item in likert_cols) {
    cat(sprintf("\n--- 题项: %s ---\n", item))
    item_table <- table(survey_data[survey_data$Workshop == ws, item], useNA = "ifany")
    print(item_table)
    # 可选:添加百分比
    print(prop.table(item_table) * 100)
  }
}

关键提示

  • 确保Workshop是字符或因子类型,避免数值型分组出现异常
  • 若Likert题项命名有规律(比如全是Q开头),可用likert_cols <- names(survey_data)[grepl("^Q", names(survey_data))]自动筛选,不用手动列名
  • 要展示缺失值的话,tabyl加show_missing=TRUE,基础Rtable加useNA="ifany"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:27:49