Stata 如何在整个时间段内保持有观察结果的面板?
我在斯塔塔有一个不平衡的小组,有3年(2006年、2008年和2010年)和13768个ID。我执行命令Stata 如何在整个时间段内保持有观察结果的面板?,stata,data-cleaning,panel-data,Stata,Data Cleaning,Panel Data,我在斯塔塔有一个不平衡的小组,有3年(2006年、2008年和2010年)和13768个ID。我执行命令xtdescripe,得到: Freq. Percent Cum. | Pattern* ---------------------------+---------- 8265 49.80 49.80 | 111 2672 16.10 65.90 | 1.. 2241 13.50 79.40 | 11. 1779 10.7
xtdescripe
,得到:
Freq. Percent Cum. | Pattern*
---------------------------+----------
8265 49.80 49.80 | 111
2672 16.10 65.90 | 1..
2241 13.50 79.40 | 11.
1779 10.72 90.12 | ..1
923 5.56 95.69 | .11
413 2.49 98.17 | .1.
303 1.83 100.00 | 1.1
---------------------------+----------
16596 100.00 | XXX
--------------------------------------
*每列代表2个句点。
我想保留
所有三年都有观察结果的ID。
我试图实现一个简单的命令,比如
keep pid if syear == 2006 & syear == 2008 & syear == 2010
及
但它们是错误的,因为在第一种情况下,语法是无效的,而在第二种情况下,我只是删除了所有观察结果
我如何才能仅为在整个时间段(2006年、2008年和2010年三年)内都有观测的ID保留观测值?当Stata测试条件时,它通过观测值对其进行测试。除非使用下标语法,否则它不会查看其他观察结果。现在情况
syear == 2006 & syear == 2008 & syear == 2010
永远不会是真的,因为它要求在同一观察中,syear
3个不同的值。所以什么都没留下,什么都丢了。就像说
我的年龄是29岁,31岁,33岁
这一点(无论你的年龄)在同一时刻都是不正确的
在你的情况下,这是可行的
bysort pid : keep if _N == 3
这更接近您尝试的逻辑:
bysort pid : egen npanel = total(inlist(syear, 2006, 2008, 2010))
keep if npanel == 3
或者你可以去
bysort pid : egen npanel = total(syear == 2006 | syear == 2008 | syear == 2010)
对于您描述的问题,第一种解决方案是最好的,但其他两种解决方案中的技术在其他情况下也会有所帮助
bysort pid : egen npanel = total(syear == 2006 | syear == 2008 | syear == 2010)