【问题标题】:Analyzing LimeSurvey ranking data in R在 R 中分析 LimeSurvey 排名数据
【发布时间】:2012-03-07 23:45:51
【问题描述】:

我使用 LimeSurvey 为一大群学生收集了 8 个选项的排名信息。我已将结果导出为 CSV,得到如下内容...

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

... 排名从最低到最高(例如 Team1 最喜欢 Option7)。我试图把它变成......

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 和它的同类可能会有所帮助,但不得不使用“位置”信息让我感到困惑。

感谢任何帮助!

【问题讨论】:

    标签: r limesurvey


    【解决方案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 按列主要顺序返回一个矩阵。

    【讨论】:

    • 看起来很完美;谢谢!从您的回答中,我了解了order-1 索引、drop 参数、cbind 和基本的apply(而不是更常见的sapply)...令人敬畏的信息密度!
    猜你喜欢
    • 2022-11-25
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多