2

私は LimeSurvey を使用して、学生の大規模なクラス全体で 8 つのオプションのランキング情報を取得しました。結果を CSV としてエクスポートしたところ、次のような結果が得られました...

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

... ランキングは最低から最高へと進みます (例: チーム 1 が最も優先されるオプション 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のような」方法で(たとえば、ネストされたforループを回避するなど)。私の最終目標は、1 位、2 位などの投票頻度を示す各オプションのヒストグラムを生成することです。私は疑いを持っていreshapeます。

任意の支援に感謝します!

4

1 に答える 1

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 は行列を列優先順で返すため、転置が必要です。

于 2012-03-07T23:55:28.327 に答える