Stata 删除仅在面板数据中出现一次的观察值
我使用的是Stata,有两个周期的面板数据,t1和t2。我还有一个唯一的标识符,如果该人在两个期间都做出了响应,那么该标识符在各个期间都是恒定的 例如,如果person001在t1和t2中都完成了调查,则每个时段的答案都存储在标识符person001下。这导致数据集中有两个具有相同标识符的条目,一个在t1下,一个在t2下 然而,有些人只在一段时间内完成了调查,因此他们的识别码只出现在t1或t2中 我想要一种方法,可以Stata 删除仅在面板数据中出现一次的观察值,stata,Stata,我使用的是Stata,有两个周期的面板数据,t1和t2。我还有一个唯一的标识符,如果该人在两个期间都做出了响应,那么该标识符在各个期间都是恒定的 例如,如果person001在t1和t2中都完成了调查,则每个时段的答案都存储在标识符person001下。这导致数据集中有两个具有相同标识符的条目,一个在t1下,一个在t2下 然而,有些人只在一段时间内完成了调查,因此他们的识别码只出现在t1或t2中 我想要一种方法,可以删除那些只在一个时段或另一个时段出现的内容 我试过了 drop if ident
删除那些只在一个时段或另一个时段出现的内容
我试过了
drop if identifier[_n-1] != identifier if period == t2
但这只是删除所有t1观察值。如果您的数据格式较长,请尝试
bysort identifier: drop if _N==1
或
这将按id
变量对数据进行排序\N
是一个系统变量,用于跟踪观察次数。bysort
前缀的by
部分计算id的每个值的观察次数,而不是整个数据的观察次数。然后你去掉那些只出现一次的观察结果,或者保留那些出现两次的观察结果。这些操作是等效的。请注意,您的声明是非法的。第二个if
应该是&
。
bysort identifier: keep if _N==2