首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >其他列R的条件除法

其他列R的条件除法
EN

Stack Overflow用户
提问于 2022-04-12 21:01:57
回答 1查看 28关注 0票数 0

我试图在下面的dataframe中创建三个额外的列,它计算一个候选人相对于另一个候选人的得票率、候选人的选票份额和一个虚拟变量1/0表示胜利与否,每个州的每个部分都是如此。

我的数据:

代码语言:javascript
运行
复制
State City Vote Section Candidat
 MA     A    53     1       Joe
 MA     A    39     1       Tom
 MA     A    26     2       Tom
 MA     A    29     2       Joe
 MA     B    12     1       Tim
 MA     B    10     1       Ben
 MA     B    16     2       Tim
 MA     B    13     2       Ben
 CH     C    88     1       Liz
 CH     C    65     1       Alex
 CH     C    71     1       Aziz
 CH     C    23     2       Aziz
 CH     C    30     2       Alex
 CH     C    19     2       Liz

所需数据

代码语言:javascript
运行
复制
State City Vote Section Candidat Margin Share Elect
 MA     A    53     1       Joe   0.36   0.58   1
 MA     A    39     1       Tom  -0.36   0.42   0
 MA     A    26     2       Tom  -0.10   0.47   0
 MA     A    29     2       Joe   0.10   0.53   1
 MA     B    12     1       Tim   0.20   0.55   1
 MA     B    10     1       Ben  -0.20   0.45   0
 MA     B    16     2       Tim   0.23   0.55   1
 MA     B    13     2       Ben  -0.23   0.45   0
 CH     C    88     1       Liz   0.35   0.58   1
 CH     C    65     1       Alex -0.35   0.42   0
 CH     C    71     1       Aziz  2.09   0.76   1
 CH     C    23     2       Aziz -2.09   0.24   0
 CH     C    30     2       Alex  0.58   0.61   1
 CH     C    19     2       Liz  -0.58   0.39   0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 21:51:49

你可以用

代码语言:javascript
运行
复制
library(dplyr)


df %>% 
  group_by(State, City, Section) %>% 
  mutate(
    Margin = ifelse(Vote == max(Vote), max(Vote) / min(Vote) - 1, 1 - max(Vote) / min(Vote)),
    Share = Vote / sum(Vote),
    Elect = +(Vote == max(Vote))
  ) %>% 
  ungroup()

这会返回

代码语言:javascript
运行
复制
# A tibble: 14 x 8
   State City   Vote Section Candidat Margin Share Elect
   <chr> <chr> <dbl>   <dbl> <chr>     <dbl> <dbl> <int>
 1 MA    A        53       1 Joe       0.359 0.576     1
 2 MA    A        39       1 Tom      -0.359 0.424     0
 3 MA    A        26       2 Tom      -0.115 0.473     0
 4 MA    A        29       2 Joe       0.115 0.527     1
 5 MA    B        12       1 Tim       0.2   0.545     1
 6 MA    B        10       1 Ben      -0.2   0.455     0
 7 MA    B        16       2 Tim       0.231 0.552     1
 8 MA    B        13       2 Ben      -0.231 0.448     0
 9 CH    C        88       1 Liz       0.354 0.393     1
10 CH    C        65       1 Alex     -0.354 0.290     0
11 CH    C        71       1 Aziz     -0.354 0.317     0
12 CH    C        23       2 Aziz     -0.579 0.319     0
13 CH    C        30       2 Alex      0.579 0.417     1
14 CH    C        19       2 Liz      -0.579 0.264     0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71849072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档