删除仅在面板数据中出现一次的观察结果

时间:2014-03-05 17:35:43

标签: stata

我正在使用Stata并且具有两个句点t1和t2的面板数据。我还有一个唯一的标识符,如果该人在两个时期都有响应,则该标识符在不同时期内是不变

例如,如果person001在t1和t2都完成了调查,则每个期间的答案都存储在标识符person001下。这导致数据集中的两个条目具有相同的标识符,一个在t1下,一个在t2下。

但是,有些人只在一个时期内完成了调查,因此他们的标识符只出现在t1或t2中。

我想要一种方法drop只出现在一个时期或另一个时期的那些。

我试过了

drop if identifier[_n-1] != identifier if period == t2 

但这只是drop所有t1观察。

1 个答案:

答案 0 :(得分:2)

如果您的数据是长格式,请尝试

bysort identifier: drop if _N==1

bysort identifier: keep if _N==2

这是按id变量对数据进行排序。 _N是一个系统变量,用于跟踪观察的数量。 by前缀的bysort部分计算id的每个值的观察数,而不是整个数据的观察数。然后你摆脱那些只出现一次或keep出现两次的观察结果。这些行为是等效的。