在Rstudio中查找对象具有最大值的时间

时间:2020-02-11 19:18:04

标签: r max apply

我有一个对象,其值是一个国家每个位置(950个位置和8个政党)每个政党的票数。

我想知道一个政党获得了多少次胜利(获得了比其他政党更多的选票)。

1 个答案:

答案 0 :(得分:0)

也许不是最优雅的解决方案,但似乎可行。

数据

set.seed(111)
party <- rep(LETTERS[1:2], 5)
location <- c(rep("a",2), rep("b",2),rep("c",2),rep("d",2),rep("e",2))
votes <- sample(1:100000, 10)
df <- data.frame(party, location, votes)

第1步:使用aggregate

确定按位置投票的大多数选票
most_votes <- aggregate(votes ~ location, data = df, max)

第2步:将most_votes中的选票与df中的选票进行匹配,并分配诸如wins之类的标签以识别得票最多的一方:

df$winner <- ifelse(df$votes[match(df$votes,most_votes$votes)], "wins", NA)

结果

df
   party location votes winner
1      A        a 99283   wins
2      B        a 27417   <NA>
3      A        b 34885   wins
4      B        b  6140   <NA>
5      A        c  3117   <NA>
6      B        c 29258   wins
7      A        d 84249   <NA>
8      B        d 90875   wins
9      A        e 86641   wins
10     B        e 18567   <NA>