Stata 按组生成

Stata generate by groups

我的代码发生了一件非常奇怪的事情。我有面板数据集,面板 ID 为 p_id,我正在尝试使用 panel_id 创建另一个变量。我的代码是这样的,其中 p_id 是小组 ID,marital_status 每个时间段观察到的人 marital_status x 是我想要创建的变量。

bys p_id: gen count =_N
bys p_id: gen count1 =_n
bys p_id: gen x= marital_status if count1 ==1

但是当我这样做时

tab x

每次我 运行 这段代码时,我都会得到不同的行数(行总数不变)。这些数字非常紧密地聚集在一起,但我需要了解为什么会这样。

虽然缺乏可重现的例子是不好的做法,但可以猜测发生了什么。第一行代码没有问题,但是后面两行和

效果一样
bys p_id: gen x = marital_status if _n == 1

换句话说,新变量包含婚姻状况数据来自每组观察的第一个观察 不同p_id。但是在 p_id 上排序并没有说明具有相同 p_id 的观察的排序顺序,并且如果没有足够的约束,组内排序顺序是不可重现的。因此,第一个观察结果很容易与您报告的结果不同(除非每个组中自然只有一个观察结果)。

具体来说,假设 p_id 42 有 3 个观测值。那么这些观测值的 6 个可能顺序中的任何一个都与 p_id 上的排序一致。等等。

大概每组中的一个观察结果有一些特别之处。您将需要更多地解释您的数据以及您希望得到什么以获得更全面的建议,但这不是一个难题。