同一列中的数学运算,按 R 中的组和条件

Math operations in the same column, by groups and conditions in R

我想计算一下胜负。我上传了一个我的数据集的例子,其中有三个城市,两年,如果候选人在那个城市的选举中获胜(1 = 是,0 = 否),他或她获得的选票份额,以及胜率。

保证金将通过计算获胜候选人和失败候选人所获得的选票份额的差值来给出。我不知道如何在 R 中做到这一点。

city   year elected votes_share margin
   <chr> <dbl>   <dbl>       <dbl>  <dbl>
 A         1       1          50     40
 B         1       1          60     40
 C         1       1          70     40
 A         1       0          10    -50
 B         1       0          20    -50
 C         1       0          30    -50
 A         2       1          60     40
 B         2       1          70     40
 C         2       1          80     60
 A         2       0          20     20
 B         2       0          30     30
 C         2       0          20     20

我们可以使用

 library(dplyr)
 df1 %>%
    group_by(city, year) %>%
    mutate(margin2 = sum(vote_share[elected == 1]) - sum(vote_share[elected == 0]))