【问题标题】:Showing Percentages with package likert in R在 R 中显示带有包装 likert 的百分比
【发布时间】:2018-07-20 07:47:09
【问题描述】:

我有一个包含 6 个问题和 6 个答案的数据集,范围从 1(非常差)到 6(非常好)。这可以使用李克特图来可视化。 假设数据如下所示:

d1<-data.frame(1=c(1,2,3,4,5,NA),2=c(1,2,3,4,5,6),3=c(1,2,3,4,5,6),4=c(1,2,3,4,5,6),5=c(1,2,3,4,5,6),6=c(1,2,3,NA,5,6))

要使用likert,我必须将所有数字转换为因子,并且它仅在我先将数字转换为字母时才有效

d1[d1[1:6,1:6]==1]<-"Level 1"
d1[d1[1:6,1:6]==2]<-"Level 2"
d1[d1[1:6,1:6]==3]<-"Level 3"
d1[d1[1:6,1:6]==4]<-"Level 4"
d1[d1[1:6,1:6]==5]<-"Level 5"
d1[d1[1:6,1:6]==6]<-"Level 6"

然后将它们定义为因子:

d1<-data.frame(E1=as.factor(d1$1),E2=as.factor(d1$2),E3= as.factor(d1$3),E4=as.factor(4), E5=as.factor(d1$5),E6=as.factor(d1$6))

然后是使用likert包,像这样:

d2<-likert(d1)
plot(d2, ordered=F)

输出是这样的(不同的值) 一切都很好,但是,我需要包括每个条的百分比。我找到了 plot.percents 选项,它可以设置为 TRUE,但是它不起作用并且没有显示为选项,即使它写在 likert 的文档中。 我也看过这个帖子:here,我试过了,它说维度太少了......我假设他的代码是为 5 个可能的答案而编写的,而对我来说是 6 个。

【问题讨论】:

    标签: r


    【解决方案1】:

    似乎likertHH 包都使用likert() 之间存在一些混淆。可能所有变量都应该具有相同数量的因子水平(在这种情况下为 6)。

    否则@digEmAll 的代码似乎在您的项目中运行良好。

    首先,只需保存原始标签。

    yLabels <- colnames(df1)
    

    然后通过round(., 0) 或其他方式调整function in line 40 可能会有所帮助:

    DF$perc <- round(ave(DF$abs, DF$y, FUN=function(x) x/sum(x) * 100), 0)  # line 40
    

    然后,要结合这两个 likert()s,只需通过 :: 分别引用每个包。

    library(likert)
    library(HH)
    HH::likert(likert::likert(df1),
               scales = list(y = list(labels = yLabels)),
               main="My Plot",
               panel=myPanelFunc,  # @digEmAll's fun applied
               sub="Response")
    

    结果

    数据

    df1 <- data.frame(matrix(rep(paste("Level", 1:6), 6), ncol=6))
    df1[6, 1] <- df1[4, 6] <- NA
    
    > df1
           X1      X2      X3      X4      X5      X6
    1 Level 1 Level 1 Level 1 Level 1 Level 1 Level 1
    2 Level 2 Level 2 Level 2 Level 2 Level 2 Level 2
    3 Level 3 Level 3 Level 3 Level 3 Level 3 Level 3
    4 Level 4 Level 4 Level 4 Level 4 Level 4    <NA>
    5 Level 5 Level 5 Level 5 Level 5 Level 5 Level 5
    6    <NA> Level 6 Level 6 Level 6 Level 6 Level 6
    

    【讨论】:

    • 谢谢!我会尝试并报告它是否有效并接受您的回答!
    • 如果我的回答最终有帮助,请考虑采纳。这向其他用户发出信号,表明问题已解决,他们不会再投入任何时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2018-08-25
    相关资源
    最近更新 更多