在R中,我有一个数据框,其中包含Seat(factor),Party(factor)和Votes(numeric)的列。我想创建一个概要数据框,其中包含Seat,Winning party和Vote共享列。例如,从数据帧使用reshape + cast来聚合多个列
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)))
非常流行的数据集! – 2010-05-06 14:16:05
确实!我已经生成了显示上一次选举结果的图表,以及最新的betfair.com赔率,我想为今晚做好准备。情节在http://www.cs.ucl.ac.uk/staff/d.wischik/Interests/Stats/Election/uk2010.html – DamonJW 2010-05-06 14:47:36