R-在唯一行上强制转换数据帧-重塑2
我有一个按选区和党派显示选举结果的数据框。我需要找到每个选区的得票最多的政党 我的df看起来像这样R-在唯一行上强制转换数据帧-重塑2,r,R,我有一个按选区和党派显示选举结果的数据框。我需要找到每个选区的得票最多的政党 我的df看起来像这样 # gss party votes 1 W07000049 Labour 22662 2 W07000049 Conservative 5901 3 W07000049 LibDem 941 3 W07000058 Labour 595
# gss party votes
1 W07000049 Labour 22662
2 W07000049 Conservative 5901
3 W07000049 LibDem 941
3 W07000058 Labour 5951
3 W07000058 LibDem 1741
3 W07000058 Conservative 852
# gss Labour Conservative LibDem
1 W07000049 22662 5901 941
2 W07000058 5951 1741 941
我想将其转换为唯一的政党名称,使其成为我的列名,如下所示
# gss party votes
1 W07000049 Labour 22662
2 W07000049 Conservative 5901
3 W07000049 LibDem 941
3 W07000058 Labour 5951
3 W07000058 LibDem 1741
3 W07000058 Conservative 852
# gss Labour Conservative LibDem
1 W07000049 22662 5901 941
2 W07000058 5951 1741 941
在这个数据帧上,我可以像这样使用which.max
x$win <- colnames(df)[apply(df, 1, function(x) which.max(x)[1])]
我已尝试使用Reforme2中的dcast,但无法应用它。我怎样才能找到每个选区的获胜党
另外,我是一名初学者,请让我知道我是否能更好地解释这一点这里有一个重塑2::dcast解决方案:
dcast(df, df[, 2] ~ df[, 3])
# Output
# 1 W07000049 5901 22662 941
# 2 W07000058 852 5951 1741
这是假设df的结构如下
另一种方法是:dcast解决方案
library(reshape2)
molten <- melt(df)
dcast(molten, gss ~ party, id.vars = "gss", value.var = "value")
# gss Conservative Labour LibDem
#1 W07000049 5901 22662 941
#2 W07000058 852 5951 1741
很好用,非常感谢!在基本R中,可以使用整形:整形f,方向=宽,idvar=gss,timevar=party,或者与xtabs:xtabsvows~gss+party,df一起使用。