在 R 中,我有一个数据框,其中包含 Seat(因子)、Party(因子)和 Votes(数字)列。我想创建一个包含席位、获胜方和投票份额列的摘要数据框。例如,从数据框
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
我可以弄清楚如何实现这一目标。但我确信一定有更好的方法,可能是使用 Hadley Wickham 的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)))