如何便捷计算Likert量表数据按列统计的各选项频次
实现方案
方法1:基础R实现(无需额外依赖包)
先构造示例数据,再按列统计频次:
# 构造示例数据集 ds <- data.frame( c1 = c(1,2,3,3,2,1,1), c2 = c(1,2,3,4,5,3,5), c3 = c(5,5,4,3,1,1,1) ) # 按列统计频次,固定水平为1~5保证缺失选项频次为0 freq_matrix <- apply(ds, 2, function(col) table(factor(col, levels = 1:5))) # 转换为结构化数据框 result <- data.frame( 选项 = rownames(freq_matrix), freq_matrix, row.names = NULL )
输出的result就是你需要的结构化频次表,可直接用于后续分析。
方法2:tidyverse实现(适配后续复杂分析需求)
适合需要后续联动其他统计操作的场景:
library(dplyr) library(tidyr) result <- ds %>% # 宽表转长表 pivot_longer(cols = everything(), names_to = "问题列", values_to = "选项") %>% # 统计每个列各选项的频次 count(问题列, 选项) %>% # 补全所有1~5的选项,缺失的频次填0 complete(问题列, 选项 = 1:5, fill = list(n = 0)) %>% # 长表转回宽表得到最终结果 pivot_wider(names_from = "问题列", values_from = "n")
内容的提问来源于stack exchange,提问作者finntastic
相关产品推荐
相关产品推荐

