2012-03-07 4 views
2

私はLimeSurveyを使用して、大規模なクラスの学生に8つのオプションのランキング情報を取得しました。 ...順位が最も高い(例えばTeam1が最も好ましいOption7)に最低から行くLimeSurveyランキングデータの分析R

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

を...私はCSVとして結果をエクスポートしてきた、と私は、次のようなものを取得します。私はにこれを有効にしようとしていることは、可能な限りの方法「のようなR」が(例えば、ネストされたforループを避けるなど)などで... ...

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

何かのようです。私の最終目標は、各オプションのヒストグラムを生成して、どれくらい頻繁に投票されたかを示すことです。reshapeという怪しい疑いがありますが、ilkが助けになるかもしれませんが、 "位置情報"を使用する必要はありません。

ありがとうございました。

答えて

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が必要です。適用は列の主要な順序で行列を返すので、転置が必要です。

+0

完璧に見えます。ありがとう!あなたの答えから、 'order'、' -1'インデックス、 'drop'パラメータ、' cbind'、そして基本的な 'apply'(より一般的な' sapply'とは対照的に)について学びました。すばらしい情報密度! –