我有一个数据集,其中每一行都是公司,年份,其中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()
似乎没有生成唯一的群组。我的问题是:为什么,以及如何以健壮的方式创建独特的群组?
答案 0 :(得分:2)
这是一个老线程,但我最近遇到了相同的症状,所以我想分享我的解决方案。当然,只要提问者没有提供进一步的细节,我们就不会知道我和他的原因是否相同。
问题证明是一个精确的问题。正如4.4节中的here所解释的那样,对存储为浮点数的整数进行的计算仅在最高达16,777,216的范围内是精确的。因此,如果您的样本中有超过16,777,216家公司,舍入错误将导致将相同的ID分配给多家公司。这可以通过将ID变量的精度提高到long来直接处理:
egen long newid = group(firmid)