我有一个如下所示的数据框:
State Rank1 Rank2 Rank3 Rank4
1 37.20% 32.88% 20.92% 7.02%
2 44.01% 30.15% 22.68% 1.54%
3 49.72% 48.86% 47.61% 46.50%
4 60.40% 30.35% 26.34% 49.78%
该数据集包含特定地理位置的去年选举数据。列A包含州代码,列B:D包含有关特定州前四大党的投票份额的信息。
我的任务是根据某些标准将它们分为4类:
单极 - 获胜者在获得多数票方面没有遇到任何困难。在这种情况下,大多数情况下,获胜者越过中途,即超过50%的投票份额(VS用于数据集。
双极 - 选民在决定谁应该占多数时表现出明显的犹豫不决。亚军获得了大量选票,亚军和第三名选手之间的差距相当大。
多极 - 通常情况下,多名选手获得了大量选票,即使投票中的轻微波动也会产生不同的结果。
分裂 - 单极 - 获胜者获得了明确的授权,但选民在决定下一次投票的人时表现出犹豫不决。超过1个竞争者获得了几乎相似的选票。
我如何在 R 中执行此操作,因为投票份额之间会有非常接近的比较。提前谢谢。
干杯!
答案 0 :(得分:0)
使用data.frame进行投票:
votes = data.frame(State = c(1:4), Rank1 = c(37.20, 44.01, 49.72, 60.40),
Rank2 = c(32.88, 30.15, 48.86, 30.35),
Rank3 = c(20.92, 22.68, 47.61, 26.34),
Rank4 = c(7.02, 1.54, 46.50, 49.78))
然后使用库dplyr
来使用函数case_when
。
例如
library(dplyr)
votes$type = case_when(
votes$Rank1 > unipolar_limit | votes$Rank1 - votes$Rank2 > unipolar_limit2 ~ "Unipolar"
, votes$Rank2 - votes$Rank3 > bipolar_limit ~ "Bipolar"
, votes$Rank1 - votes$Rank3 < multi_limit ~ "Multi-polar"
, votes$Rank1 > 50 & votes$Rank2 - votes$Rank4 < divided_limit ~ "Divided-Unipolar"
)
具有你喜欢的限制或条件的东西。