Stata:使用egen group()创建唯一标识符

时间:2014-03-26 22:22:17

标签: stata panel-data

我有一个数据集,其中每一行都是公司,年份,其中firmid是一个字符串。

如果我这样做

duplicates drop firmid year, force

它没有删除任何内容,因为没有重复项(我最初在运行duplicates drop firmid year, force后创建了数据集)。

到目前为止一切顺利。我想创建一个需要firmid数字的面板。所以我跑

egen newid = group(firmid)
xtset newid year

但是在面板中重复了时间值'弹出错误。此外,

duplicates list newid year

列出了一大堆重复项。

好像egen, group()似乎没有生成唯一的群组。我的问题是:为什么,以及如何以健壮的方式创建独特的群组?

1 个答案:

答案 0 :(得分:2)

这是一个老线程,但我最近遇到了相同的症状,所以我想分享我的解决方案。当然,只要提问者没有提供进一步的细节,我们就不会知道我和他的原因是否相同。

问题证明是一个精确的问题。正如4.4节中的here所解释的那样,对存储为浮点数的整数进行的计算仅在最高达16,777,216的范围内是精确的。因此,如果您的样本中有超过16,777,216家公司,舍入错误将导致将相同的ID分配给多家公司。这可以通过将ID变量的精度提高到long来直接处理:

egen long newid = group(firmid)