分析R中的LimeSurvey排名数据

时间:2012-03-07 23:45:51

标签: r limesurvey

我使用LimeSurvey来捕获大班学生中8个选项的排名信息。我已将结果导出为CSV,我得到如下内容......

Team1 Option7 Option4 Option6 Option1 Option2 Option3 Option5 Option8
Team2 Option4 Option3 Option1 Option2 Option7 Option8 Option6 Option5
...

...排名从最低到最高(例如Team1最喜欢的选项7)。我试图把它变成什么......就像......

Option1 Option2 Option3 Option4 Option5 Option6 Option7 Option8
4       5       6       2       7       3       1       8
3       4       2       1       8       7       5       6
...

...以尽可能“R like”的方式(例如避免嵌套for循环等)。我的最终目标是为每个选项生成直方图,显示他们在第一,第二等投票的频率。我怀疑reshape这可能会有所帮助,但是必须使用“位置”信息让我感到沮丧起来。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

 dat <- read.table(text="Team1 Option7 Option4 Option6 Option1 Option2 Option3 Option5 Option8
     Team2 Option4 Option3 Option1 Option2 Option7 Option8 Option6 Option5")

 cbind( dat[,1,drop=FALSE ], t( apply(dat[ , -1], 1, order) ) )
#     V1 1 2 3 4 5 6 7 8
#1 Team1 4 5 6 2 7 3 1 8
#2 Team2 3 4 2 1 8 7 5 6

需要drop = FALSE以防止列成为向量。需要转置,因为apply按列主要顺序返回矩阵。