r - 将三列分组,然后比较第四列的值
问题描述
我正在研究 2008 年至 2017 年的选举数据。我已经在一定程度上进行了分析。但是,我在问以下问题。
如果某个政党在上一轮选举中获胜,我需要确定它是否赢得了特定选区的选举。
ST_CODE、AC_NO 和 YEAR(州代码、选区编号和年份)唯一地确定观察结果。第四列是给定年份获胜的政党的名称。
ST_CODE YEAR AC_NO PARTYABBRE
S15 2008 21 IND
S15 2008 22 NCP
S15 2008 23 INC
S15 2008 24 INC
S15 2008 25 UDP
S15 2008 26 UDP
S15 2008 27 INC
S15 2008 28 IND
S15 2008 29 INC
S15 2008 30 UDP
S15 2008 31 INC
S15 2008 32 INC
S15 2008 33 HPDP
S15 2008 34 HPDP
S15 2008 35 INC
S15 2008 36 INC
S15 2008 38 NCP
S15 2008 39 NCP
S15 2008 40 NCP
S15 2008 41 INC
数据集的一部分已被证明可以给出一个想法。这一年持续到2017年
所以如果A方在特定的ST_CODE和AC_NO中赢得了2008年的选举,我想知道他们是否在2013年(5年后)赢得了选举如果是这样,那么应该添加一个虚拟变量1,否则0
解决方案
我们可以arrange
通过ST_CODE
,AC_NO
和YEAR
,group_by
ST_CODE
和AC_NO
的数据lag
来比较当前年份和上一年的值。
library(dplyr)
df %>%
arrange(ST_CODE, AC_NO, YEAR) %>%
group_by(ST_CODE, AC_NO) %>%
mutate(previous_win = as.integer(PARTYABBRE == lag(PARTYABBRE)))
这将NA
在每一年的第一年返回,ST_CODE
并将AC_NO
在接下来的几年中返回 1、0。
推荐阅读
- cocoapods - 如何删除/删除 CocoaPod?
- java - Java JNI 错误帮助?潜在的包层次结构错误?
- indexing - 导入 obj 文件时,顶点索引顺序会更改。有什么办法可以解决吗?
- c++ - “XInputExtension”是否与触摸支持有关?
- php - Laravel:当一张表与多张表相关时,我如何组合返回数据?
- c# - 如何检查 2 个类似项目的列表?
- python - 使用管道或队列进行多处理
- primary-key - 在 locust 上进行负载测试时使用主键记录插入
- simulation - 如何测量完全占用资源的时间?
- javascript - 单击按钮时如何运行随机函数?