Rには、座席(因子)、党(因子)、投票(数値)の列を持つデータフレームがあります。シート、勝者、投票シェアの列を持つ要約データフレームを作成したいと思います。たとえば、データフレームから
df <- data.frame(party=rep(c('Lab','C','LD'),times=4),
votes=c(1,12,2,11,3,10,4,9,5,8,6,15),
seat=rep(c('A','B','C','D'),each=3))
出力を取得したい
seat winner voteshare
1 A C 0.8000000
2 B Lab 0.4583333
3 C C 0.5000000
4 D LD 0.5172414
私はこれを達成する方法を理解することができます。しかし、もっと良い方法があるはずだと私は確信している。おそらくハドリー・ウィッカムのreshape
パッケージを使った狡猾なワンライナーだろう。助言がありますか?
価値があるので、私のソリューションは私のパッケージの関数を使用し、
djwutils_2.10.zip
次のように呼び出されます。しかし、それが扱わないあらゆる種類の特殊なケースがあるので、私はむしろ他の誰かのコードに頼りたいです。
aggregateList(df, by=list(seat=seat),
FUN=list(winner=function(x) x$party[which.max(x$votes)],
voteshare=function(x) max(x$votes)/sum(x$votes)))