首页 > 解决方案 > 将三列分组,然后比较第四列的值

问题描述

我正在研究 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

标签: rdplyrdummy-variable

解决方案


我们可以arrange通过ST_CODE,AC_NOYEAR,group_by ST_CODEAC_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。


推荐阅读