筛选出面板数据中起始日期错误的观测值

时间:2018-12-02 16:32:44

标签: variables filter panel stata

我正在使用Stata中的面板数据。

是每年对公司进行质疑的数据。我只想分析在特定年份(2010年)首次受到质疑的公司的数据。我想删除所有未在2010年进行首次面试的公司的条目。数据的格式如下:

idnum year
1     2010 
1     2011
1     2012
2     2009
2     2010
2     2011
3     2011
3     2012

因此,在我想删除公司之前可能已经采访过公司,或者在以后我要删除它们之前先进行采访。因此,在图片示例中,我只想保留第一家公司的条目(idnum = 1)。

我尝试了以下方法:

by idnum, sort: drop if year<2010

但是,这只会删除2010年之前的条目,而不会删除2010年之前被质疑的所有具有该ID的条目。

有人有什么想法吗?


编辑:

我觉得应该采取的方法是为2010年未接受采访的公司获取所有ID,然后将其删除。然后从2009年或更早之前提取所有公司,并将它们也删除。但是我不知道如何在Stata中实现。

1 个答案:

答案 0 :(得分:1)

以下内容适用于您的玩具示例:

clear
input idnum year
1 2010
1 2011
1 2012
2 2009
2 2010
2 2011
2 2012
3 2011
3 2012
end

bysort idnum (year): generate tag = year[1] != 2010 

list, sepby(idnum)

     +--------------------+
     | idnum   year   tag |
     |--------------------|
  1. |     1   2010     0 |
  2. |     1   2011     0 |
  3. |     1   2012     0 |
     |--------------------|
  4. |     2   2009     1 |
  5. |     2   2010     1 |
  6. |     2   2011     1 |
  7. |     2   2012     1 |
     |--------------------|
  8. |     3   2011     1 |
  9. |     3   2012     1 |
     +--------------------+

drop if tag

list

     +--------------------+
     | idnum   year   tag |
     |--------------------|
  1. |     1   2010     0 |
  2. |     1   2011     0 |
  3. |     1   2012     0 |
     +--------------------+

或一行:

bysort idnum (year): drop if year[1] != 2010