Ste*_*vis 2 if-statement r conditional-statements mutate
我正在尝试根据另一个数据集的条件和分组折叠数据集。我当前的数据框看起来像这样
对于每个“国会”中的每个“RollNo”,我想要一个新变量,指示同一州的两名参议员是否一起投票(1,0)并且属于同一政党(1,0)
| 国会 | 森 | 卷号 | 状态 | 投票 | 派对 |
|---|---|---|---|---|---|
| 106 | 杰伊 | 1 | 方舟 | 1 | 代表 |
| 106 | 玛丽 | 1 | 方舟 | 1 | 民主党 |
| 106 | 账单 | 2 | 十 | 2 | 民主党 |
| 106 | 凯文 | 2 | 十 | 1 | 民主党 |
| 108 | 起诉 | 1 | 矿石 | 2 | 代表 |
| 108 | 莎莉 | 1 | 矿石 | 2 | 代表 |
| 108 | 丽莎 | 3 | 斯达克 | 1 | 代表 |
| 108 | 一分钱 | 3 | 斯达克 | 2 | 代表 |
| 109 | 杰伊 | 1 | 密歇根州 | 1 | 民主党 |
| 109 | 玛丽 | 1 | 密歇根州 | 9 | 代表 |
| 109 | 鲁迪 | 5 | 卡尔 | 1 | 民主党 |
| 109 | 奈尔斯 | 5 | 卡尔 | 1 | 民主党 |
新的数据框应如下所示:
| 国会 | 卷号 | 状态 | 配对投票 | 配对派对 |
|---|---|---|---|---|
| 106 | 1 | 方舟 | 1 | 0 |
| 106 | 2 | 十 | 0 | 1 |
| 108 | 1 | 矿石 | 1 | 1 |
| 108 | 3 | 斯达克 | 0 | 1 |
| 109 | 1 | 密歇根州 | 0 | 0 |
| 109 | 5 | 卡尔 | 1 | 1 |
我已经尝试过下面的代码,调整了几次。我的数据集返回相同的观察结果,并且两个新列为我的新变量的空向量。
library(dplyr)
dataframe['Pair_Vote'] <- NA
dataframe['Pair_Party'] <- NA
newdata <- dataframe %>% group_by(congress, RollNo, state) %>%
mutate(Pair_Vote - case_when(any(Vote == Vote) ~ 1, FALSE ~ 0))
Run Code Online (Sandbox Code Playgroud)
我不知所措。
mutate当您想要按原样向数据框添加列时使用,summarize当您希望结果每组一行时使用。您的输出每组一行,因此我们将使用summarize.
并vote == vote没有多大用处,让我们用来n_distinct计算不同的值。
dataframe %>%
group_by(congress, RollNo, state) %>%
summarize(
Pair_Vote = ifelse(n_distinct(Vote) == 1, 1, 0),
Pair_Party = ifelse(n_distinct(Party) == 1, 1, 0)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |