R 如何为最常见的应用程序创建数据子集

R 如何为最常见的应用程序创建数据子集,r,subset,R,Subset,我需要一些帮助来创建数据子集。我肯定这是个简单的问题,但我想不出来。 例如,在表中,我需要创建一个子集的数据,其中包括来自每个州的总统候选人。因此,以阿拉巴马州为例,我需要唐纳德·特朗普的选票,因为他获得了最高比例的选票(候选人票/总票)。我需要把每个州的获胜者隔离开来 State Candidate candidatevotes totalvotes Alabama D J Trump 1318255

我需要一些帮助来创建数据子集。我肯定这是个简单的问题,但我想不出来。 例如,在表中,我需要创建一个子集的数据,其中包括来自每个州的总统候选人。因此,以阿拉巴马州为例,我需要唐纳德·特朗普的选票,因为他获得了最高比例的选票(候选人票/总票)。我需要把每个州的获胜者隔离开来

State          Candidate          candidatevotes          totalvotes
Alabama         D J Trump          1318255                 2123372
Alabama         Clinton            729547                  2123372
Alabama         Gary Johnson       44467                   2123372
Alabama         Other              21712                   2123372
然而,我不知道如何将获胜者与每个州分开。我试过使用

data_sub.5]

但我知道,由于有第三党候选人,并不是每个州的每个获胜者都会以多数票获胜。我附上一张照片供参考。提前谢谢你

我们可以按“状态”进行分组,并过滤每个“状态”的
max
比例行

library(dplyr)
 df1 %>%
     mutate(prop = candidatevotes/totalvotes) %>%
     group_by(State) %>%
     filter(prop > .5, prop == max(prop))  

我只是稍微操纵了一下您的数据,以演示如何解决这个问题:

# Just changed the last two states to Texas so that you get a two line result (not just one)
election <- data.frame(State = c("Alabama", "Alabama", "Texas", "Texas"),
                       Candidate = c("D J Trump", "Clinton", "Gary Johnson", "Other"),
                       candidatevotes = c(1318255, 729547, 44467, 21712),
                       totalvotes = c(2123372, 2123372, 2123372, 2123372))
# need library
library(dplyr)

election %>% 
  # group by the variable you want the max value for (State)
  dplyr::group_by(State) %>% 
  # get the lines with maximum candidatevotes for each State
  dplyr::filter(candidatevotes == max(candidatevotes))
#刚刚将最后两个州改为德克萨斯州,这样您可以得到两行结果(而不仅仅是一行)
选举百分比
#按要为其设置最大值的变量分组(状态)
dplyr::分组依据(状态)%>%
#获取每个州的最大候选投票数
dplyr::筛选器(候选投票==最大值(候选投票))

非常感谢您!我花了好几个小时想弄明白!