Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stata 删除仅在面板数据中出现一次的观察值_Stata - Fatal编程技术网

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

Stata 删除仅在面板数据中出现一次的观察值,stata,Stata,我使用的是Stata,有两个周期的面板数据,t1和t2。我还有一个唯一的标识符,如果该人在两个期间都做出了响应,那么该标识符在各个期间都是恒定的 例如,如果person001在t1和t2中都完成了调查,则每个时段的答案都存储在标识符person001下。这导致数据集中有两个具有相同标识符的条目,一个在t1下,一个在t2下 然而,有些人只在一段时间内完成了调查,因此他们的识别码只出现在t1或t2中 我想要一种方法,可以删除那些只在一个时段或另一个时段出现的内容 我试过了 drop if ident

我使用的是Stata,有两个周期的面板数据,t1和t2。我还有一个唯一的标识符,如果该人在两个期间都做出了响应,那么该标识符在各个期间都是恒定的

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

然而,有些人只在一段时间内完成了调查,因此他们的识别码只出现在t1或t2中

我想要一种方法,可以
删除那些只在一个时段或另一个时段出现的内容

我试过了

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