【问题标题】:Returning more than one variable using Group By and summarize with Dplyr使用 Group By 返回多个变量并使用 Dplyr 汇总
【发布时间】:2017-02-21 20:27:05
【问题描述】:

我正在尝试在我的 2016 年选举数据集中创建一个新列,以显示候选人是输了还是赢了一个县。

 Democrat %>%
  group_by(county) %>%
  summarise(winningvote = max(fraction_votes))

此代码仅返回最大投票。我也可以返回候选变量吗?添加:

 select(county, fraction_votes, candidate)

不返回任何不同的东西。

我将尝试在代码的最后一行使用 mutate 创建一个“结果”变量。我在想申请家庭可能是解决这个问题的另一种方法。

谢谢

【问题讨论】:

  • 是否有一个名为candidate 的列?您应该提供reproducible example。你描述了你想如何总结fraction_votes,但是每个县只有一个候选人吗?你想如何总结候选人?

标签: r dplyr


【解决方案1】:

如果candidateDemocrat数据框的一个字段,最简单的方法是做多个分组:

Democrat %>%
  group_by(county, candidate) %>%
  summarise(winningvote = max(fraction_votes))

【讨论】:

    【解决方案2】:

    我非常有信心有一种更简洁的方法可以做到这一点,但下面会为您提供一个 1 的获胜投票标志。然后您只需将 NA 替换为 0(第二个代码块)

    left_join(Democrat, (Democrat %>%
      group_by(county) %>%
      summarise(fraction_votes = max(fraction_votes)) %>%
      mutate(Winning_Vote = 1)))
    
    Democrat[is.na(Democrat)] <- 0
    

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2023-03-20
      • 2014-12-02
      • 2018-06-29
      • 2019-01-27
      相关资源
      最近更新 更多