在Stata中管理数据

时间:2014-11-11 01:45:50

标签: stata

使用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工作表中,您应该清楚地看到它。

2 个答案:

答案 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]

如果按idAccsstnd排序,并且每个面板的第一个和最后一个观察值相等,则表示变量保持常量。

如果Accstnd中有遗漏,则需要进一步的工作。