R 中的 gglikert 与分组因素

问题描述 投票:0回答:1

我在 R 中有一个数据框,如下所示:

 df
# A tibble: 150 × 7
   grouping q1                         q2                         q3                         q4                         q5    q6   
   <chr>    <fct>                      <fct>                      <fct>                      <fct>                      <fct> <fct>
 1 A        Disagree                   Strongly disagree          Strongly agree             Agree                      Agree Stro…
 2 A        Strongly disagree          Agree                      Neither agree nor disagree Neither agree nor disagree Agree Stro…
 3 A        Neither agree nor disagree Disagree                   Strongly disagree          Strongly agree             Neit… Neit…
 4 A        Strongly disagree          Neither agree nor disagree Agree                      Disagree                   Stro… Neit…
 5 B        Strongly agree             Strongly disagree          Strongly agree             Disagree                   NA    Agree
 6 D        Strongly disagree          Neither agree nor disagree Agree                      Strongly agree             Neit… Neit…
 7 B        Neither agree nor disagree Disagree                   Neither agree nor disagree Neither agree nor disagree Stro… Neit…
 8 B        Strongly disagree          Strongly agree             Neither agree nor disagree Agree                      Neit… Stro…
 9 A        Neither agree nor disagree Agree                      Strongly agree             Strongly disagree          Neit… Agree
10 D        Strongly agree             Disagree                   Agree                      Disagree                   Agree Neit…
# ℹ 140 more rows
# ℹ Use `print(n = ...)` to see more rows

我想使用 ggstats 包中的 gglikert 来绘制它,但在 y 轴上有分组因素/类别。我如何在 R 中使用 gglikert() 或 ggplot2 做到这一点?

likert_levels <- c(
  "Strongly disagree",
  "Disagree",
  "Neither agree nor disagree",
  "Agree",
  "Strongly agree"
)

df <-
  tibble(
    grouping = sample(c("A", "B", "C", "D"), 150, replace = TRUE),
    q1 = sample(likert_levels, 150, replace = TRUE),
    q2 = sample(likert_levels, 150, replace = TRUE, prob = 5:1),
    q3 = sample(likert_levels, 150, replace = TRUE, prob = 1:5),
    q4 = sample(likert_levels, 150, replace = TRUE, prob = 1:5),
    q5 = sample(c(likert_levels, NA), 150, replace = TRUE),
    q6 = sample(likert_levels, 150, replace = TRUE, prob = c(1, 0, 1, 1, 0))
  ) %>%
  mutate(across(-grouping, ~ factor(.x, levels = likert_levels)))
df
r dataframe ggplot2 likert
1个回答
1
投票

我想你想要

facet_rows
争论。

gglikert(df, q1:q6, facet_rows = vars(grouping))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.