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

如何按Competent占比升降序排列likert分组图内的组别

解决Likert包分组图表按指定选项占比排序的问题

核心思路

要实现每个问题区块内按Competent选项的占比对组别排序,需先从likert对象中提取每个问题-组别对应的Competent占比数据,据此重新调整每个问题下的组别顺序,最后重构likert对象完成绘图。

具体代码实现

先加载所需依赖包:

library(likert)
library(dplyr)
library(tidyr)

步骤1:提取并整理占比数据

假设你的likert对象名为likert_obj,先将其转换为数据框,筛选出每个问题、组别对应的Competent占比:

# 提取likert结果数据,按问题分组后按Competent占比升序排序
likert_df <- likert_obj$results %>%
  select(Item, Group, Competent) %>%
  group_by(Item) %>%
  arrange(Competent, .by_group = TRUE) %>%
  ungroup()

若需要降序排列,将arrange(Competent, .by_group = TRUE)改为arrange(desc(Competent), .by_group = TRUE)即可。

步骤2:调整原始数据的组别顺序

假设你的原始响应数据框为response_data,包含Group(组别)、Item(问题)及对应选项列:

# 生成每个问题对应的组别排序规则
group_order_list <- likert_df %>%
  group_by(Item) %>%
  summarise(group_order = list(Group)) %>%
  deframe()

# 按规则重新排序原始数据
sorted_data <- response_data %>%
  group_by(Item) %>%
  arrange(factor(Group, levels = group_order_list[[cur_group()$Item]]), .by_group = TRUE) %>%
  ungroup()

步骤3:重构likert对象并绘图

# 基于排序后的数据创建新的likert对象
sorted_likert <- likert(sorted_data, grouping = "Group")

# 生成排序后的分组likert图
plot(sorted_likert)

关键说明

  • 确保原始数据结构符合likert包要求:宽格式下每个问题对应一列;长格式需包含Item(问题)、Response(选项)和Group(分组)列。
  • 若你的原始数据是宽格式,可先用likert::likert_to_long()转换为长格式后再执行上述排序步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:16:01