如何在R中基于两类低级别比例之和对gglikert图表排序?
解决方法
要实现按最左侧两类低级别选项的比例之和对gglikert图表排序,需手动计算每个项目的目标比例,再基于该比例指定项目排序顺序,具体步骤如下:
- 加载包与数据
library(ggstats) data(df)
- 确保回答为有序因子(保证类别顺序正确)
如果原始数据的回答不是有序因子,先转换为有序因子,明确从低到高的级别顺序(以常见李克特五级为例):
df[] <- lapply(df, function(x) { factor(x, levels = c("Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"), ordered = TRUE) })
- 计算每个项目的最左侧两类低级别比例之和
# 遍历每个项目,计算前两类(最左侧)的比例总和 low_level_prop <- sapply(df, function(col) { prop_table <- prop.table(table(col)) sum(prop_table[1:2]) # 取前两个类别的比例相加 }) # 按比例之和排序,得到项目顺序(升序;若要降序,添加decreasing = TRUE) sorted_projects <- names(sort(low_level_prop))
- 生成按目标规则排序的图表
直接在sort参数中传入自定义的项目顺序即可:
p <- ggstats::gglikert(df, sort = sorted_projects) p
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

