【问题标题】:Compare Different Columns in a dataframe in R比较 R 中数据框中的不同列
【发布时间】:2018-01-25 22:50:19
【问题描述】:

我有一个如下所示的数据框:

    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 名政党投票份额的信息。

我的任务是根据某些标准将它们分为 4 类:

单极 - 获胜者毫无困难地获得多数。在大多数情况下,获胜者会超过一半,即超过 50% 的投票份额(数据集中使用 VS。

Bi-Polar - 选民在决定谁应该获得多数方面表现出严重的优柔寡断。亚军获得大量票数,亚军与季军差距较大。

多极 - 通常多位参赛者获得大量选票,即使选票的微小波动也会导致不同的结果。

两极分化 - 获胜者有明确的授权,但选民在决定下一个投票给谁时表现出优柔寡断。超过 1 个竞争者获得了几乎相似的选票。

我如何在 R 中执行此操作,因为投票份额之间的比较非常接近。提前致谢。

干杯!

【问题讨论】:

  • 您想对最后三个类别使用什么截止值?如果不知道您所说的“优柔寡断”是什么意思,我无法回答您的问题。
  • 你试过什么?这听起来确实像是您复制并粘贴到问题中的作业,您只需付出最小的努力即可解决它。

标签: r excel dataframe statistics dplyr


【解决方案1】:

使用 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" 
)

你喜欢的限制或条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多