我的面板数据如下所示。
pid year type occurrence
10001 2012 A 1
10001 2012 A 2
10001 2013 B 5
10001 2013 B 3
10001 2013 B 2
10001 2014 A 1
10001 2014 A 5
10001 2014 A 3
10002 2012 B 2
10002 2012 B 1
10002 2012 B 6
10002 2013 B 3
10002 2013 B 2
10002 2013 B 7
10003 2012 B 2
10003 2012 B 1
10003 2012 B 6
10003 2014 B 3
10003 2014 B 2
10003 2015 B 2
10003 2015 B 5
10003 2015 B 2
10003 2016 B 3
10003 2016 B 6
我想创建一个变量,该变量指示每种pid的类型是否在过去的几年中都已更改过
pid year type occurrence typechange
10001 2012 A 1 NA
10001 2012 A 2 NA
10001 2013 B 5 "A->B"
10001 2013 B 3 "A->B"
10001 2013 B 2 "A->B"
10001 2014 A 1 "B->A"
10001 2014 A 5 "B->A"
10001 2014 A 3 "B->A"
我尝试遍历所有的pid和年份以跟踪更改,但是很快意识到对于我的小笔记本电脑,代码运行太慢。 (数据集约200,000个条目)
我决定为type
和type.lag1
创建滞后变量,然后将两者进行比较以创建typechange
变量,但是遇到了障碍。
预期的滞后变量应如下所示:
pid year type occurrence type.lag1
10001 2012 A 1 NA
10001 2012 A 2 NA
10001 2013 B 5 A
10001 2013 B 3 A
10001 2013 B 2 A
10001 2014 A 1 B
10001 2014 A 5 B
10001 2014 A 3 B
10002 2012 B 2 NA
10002 2012 B 1 NA
10002 2012 B 6 NA
10002 2013 B 3 B
10002 2013 B 2 B
10002 2013 B 7 B
10003 2012 B 2 NA
10003 2012 B 1 NA
10003 2012 B 6 NA
10003 2014 A 3 B
10003 2014 A 2 B
10003 2015 B 2 A
10003 2015 B 5 A
10003 2015 B 2 A
10003 2016 C 3 B
10003 2016 C 6 B
滞后变量应使得对于每个pid,如果类型在2012年为A,则在接下来的2013年(如果缺少2013年,则在2014年左右),滞后应为所有pid类型A. / p>
很多时候,每年都会出现3 pid,但这并不能保证。在某些情况下,某些年份也会丢失。然后,滞后应该获得前一年(可能不是连续的)的值。
如果除了创建滞后变量以创建typechange
以外,还有其他方法,那对您很有帮助。
非常感谢您!