我正在使用Stata并且具有两个句点t1和t2的面板数据。我还有一个唯一的标识符,如果该人在两个时期都有响应,则该标识符在不同时期内是不变
例如,如果person001在t1和t2都完成了调查,则每个期间的答案都存储在标识符person001下。这导致数据集中的两个条目具有相同的标识符,一个在t1下,一个在t2下。
但是,有些人只在一个时期内完成了调查,因此他们的标识符只出现在t1或t2中。
我想要一种方法drop
只出现在一个时期或另一个时期的那些。
我试过了
drop if identifier[_n-1] != identifier if period == t2
但这只是drop
所有t1观察。
答案 0 :(得分:2)
如果您的数据是长格式,请尝试
bysort identifier: drop if _N==1
或
bysort identifier: keep if _N==2
这是按id
变量对数据进行排序。 _N
是一个系统变量,用于跟踪观察的数量。 by
前缀的bysort
部分计算id的每个值的观察数,而不是整个数据的观察数。然后你摆脱那些只出现一次或keep
出现两次的观察结果。这些行为是等效的。