使用Stata 12,如果某个变量没有随时间变化,我试图从我的数据集中删除面板。
例如,在以下数据中,我想放弃面板id
2和3,因为Accstnd
不会随着时间的推移而改变。
id Accstnd Year
1 DS 1990
1 DS 1991
1 DS 1992
1 DS 1993
1 DS 1994
1 DS 1995
1 DU 1996
1 DU 1997
1 DU 1998
1 DU 1999
1 DU 2000
1 DU 2001
1 DU 2002
1 DU 2003
2 DS 1990
2 DS 1991
2 DS 1992
2 DS 1993
2 DS 1994
2 DS 1995
2 DS 1996
2 DS 1997
2 DS 1998
2 DS 1999
2 DS 2000
2 DS 2001
2 DS 2002
2 DS 2003
2 DS 2004
2 DS 2005
2 DS 2006
2 DS 2007
2 DS 2008
2 DS 2009
2 DS 2010
3 DI 1990
3 DI 1991
3 DI 1992
3 DI 1993
3 DI 1994
3 DI 1995
3 DI 1996
3 DI 1997
3 DI 1998
3 DI 1999
3 DI 2000
3 DI 2001
3 DI 2002
3 DI 2003
3 DI 2004
3 DI 2005
3 DI 2006
3 DI 2007
3 DI 2008
这似乎是一件容易的事情,但我花了最后几个小时试图找出它没有运气。
抱歉,我无法附上图片,因为我是stackoverflow的新手。但是,如果您将此数据放在Excel工作表中,您应该清楚地看到它。
答案 0 :(得分:0)
这是一种方法:
bys id: egen nvals=nvals(accstnd)
drop if nvals==1
对于每个id,您可以计算accstnd的不同值的数量。你放弃没有变化的那些。
您需要安装egenmore
包。
答案 1 :(得分:0)
一种方法是使用第一原则和一些逻辑:
bysort id (Accstnd): drop if Accstnd[1] == Accstnd[_N]
如果按id
和Accsstnd
排序,并且每个面板的第一个和最后一个观察值相等,则表示变量保持常量。
如果Accstnd
中有遗漏,则需要进一步的工作。