2

我有一个数据集,其中每一行都是一个固定的年份对,其中 afirmid是一个字符串。

如果我做

duplicates drop firmid year, force

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

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

egen newid = group(firmid)
xtset newid year

但是会弹出“面板中的重复时间值”错误。而且,

duplicates list newid year

列出一大堆重复项。

似乎egen, group()没有产生独特的群体。我的问题是:为什么以及如何以稳健的方式创建独特的组?

4

1 回答 1

5

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

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

egen long newid = group(firmid)
于 2014-11-12T15:24:01.200 回答