0

我设置了大量的李克特和其他图表来评估我的问卷的总结果。

现在我想通过分组变量“group”来做同样的事情

我设置了我所有的 likert 项目及其定义(我的数据格式非常糟糕,所以我不得不用 R 重新格式化它)。代码的想法如下: 1. 根据 likert () 函数的需要对问题进行分组和重命名 2. 让 R 根据 11 个组拆分数据框 3. 为每个组绘制一个 likert 图

现在这应该是解决方案(它适用于条形图,但由于某种原因不适用于李克特图):

for(i in 1:11)
{
x<-F5[which(F5$group==i),]
plot(likert(x[1:9]),low.color="red3", high.color="forestgreen",
 include.center=T, plot.percents=T,ordered=T, 
 legend= paste("F5","Gruppe",i), 
 legend.position="bottom",
 plot.percent.low=F,plot.percent.high=F)+ylab(ylab)+ggtitle(title.F5)
}

当我运行这段代码时,什么都没有发生。没有绘制李克特图,没有错误消息等。

示例数据,以便每个人都可以加入乐趣:

 M1 M2 M3 M4 M5 M6 M7 M8 M9 group
1   1  5  5  1  2  4  4 -9  5     1
2   2  4  5  1  2  4  4  1  5     1
3   3  3  5  1  2  4  3  1  3     1
4   1  5  5  1  2  4  4 -9  5     1
5   2  4  5  1  2  4  4  1  5     2
6   1  5  5  1  2  4  4 -9  5     2
7   2  4  5  1  2  4  4  1  5     2
8   3  3  5  1  2  4  3  1  3     3
9   4  5  5  1  2  4 -9  1  3     3
10  5  5 -9  1  3  4  4  2 -9     3
11  3  3  5  1  2  4  3  1  3     3
12  4  5  5  1  2  4 -9  1  3     4
13  5  5 -9  1  3  4  4  2 -9     3
14  5  5 -9  1  3  4  4  2 -9     3
15  3  3  5  1  2  4  3  1  3     4
16  1  5  5  1  2  4  4 -9  5     4
17  2  4  5  1  2  4  4  1  5     4
18  1  5  5  1  2  4  4 -9  5     4
19  2  4  5  1  2  4  4  1  5     4
20  3  3  5  1  2  4  3  1  3     4
  1. 将数据从数字更改为李克特式的协议项

    DATA[,1:9][DATA[,1:9]==1]<-"strongly agree"
    DATA[,1:9][DATA[,1:9]==2]<-"agree"
    DATA[,1:9][DATA[,1:9]==3]<-"unsure"
    DATA[,1:9][DATA[,1:9]==4]<-"disagree"
    DATA[,1:9][DATA[,1:9]==5]<-"strongly disagree"
    DATA[,1:9][DATA[,1:9]==-9]<-NA
    
  2. 设置协议规模

    agr<-c("stronlgy agree", "agree", "unsure", "disagree", "strongly disagree")
    
  3. 将每个定义为先前定义的比例的有序因子

    DATA[,1]=factor(DATA[,1], levels=agr, ordered=TRUE)
    DATA[,2]=factor(DATA[,2], levels=agr, ordered=TRUE)
    DATA[,3]=factor(DATA[,3], levels=agr, ordered=TRUE)
    DATA[,4]=factor(DATA[,4], levels=agr, ordered=TRUE)
    DATA[,5]=factor(DATA[,5], levels=agr, ordered=TRUE)
    DATA[,6]=factor(DATA[,6], levels=agr, ordered=TRUE)
    DATA[,7]=factor(DATA[,7], levels=agr, ordered=TRUE)
    DATA[,8]=factor(DATA[,8], levels=agr, ordered=TRUE)
    DATA[,9]=factor(DATA[,9], levels=agr, ordered=TRUE)
    
  4. 将标题设置为有趣的东西

    title.DATA<-"这条消息不会显示,因为 R 很笨。"

  5. 编写一个循环并观察 R 什么都不做

    for(i in 1:11) { x<-DATA[which(DATA$group==i),] plot(likert(x[1:9]),low.color="red3", high.color=" Forestgreen",include.center=T,plot.percents=T,ordered=T,legend= paste("DATA","Gruppe",i),legend.position="bottom",plot.percent.low=F, plot.percent.high=F)+ylab(ylab)+ggtitle(title.DATA) }

4

1 回答 1

1

它对我有用。我最近自己也遇到了这个问题。图形图会自动循环打印,而网格图则不会。对于他们,您必须添加print.


library(likert)

for(i in 1:4) { x<-DATA[which(DATA$group==i),] 
lp <- plot(likert(x[1:9]),low.color="red3", 
high.color="forestgreen", include.center=T, 
plot.percents=T,ordered=T, legend= paste("DATA","Gruppe", i), 
legend.position="bottom", plot.percent.low=F,plot.percent.high=F) +
  ylab("ylab") +
  ggtitle("This message will not show up because R is stupid.")

print(lp)
}

于 2019-04-15T13:14:09.163 回答