我正在使用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中实现。
答案 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