1

我需要每 62 次观察为每个人分配一个唯一 ID。在下面的示例中,siteid从 1 到 62 且visits=3 的每一行将引用人员 1,siteid从 1 到 62 且visits=1 的每一行将引用人员 2,等等。我试过了

  egen newid=group(siteid visits) 

  by siteid: gen uniqueid = 1 if _n==1
  replace uniqueid = sum(uniqueid)

但这些都没有产生预期的结果。

站点标识

1
2
3
4
...
62
1
2
3
4
...
62
1
2
3
4
...
62

等等

访问

3
3
3
3
...
3
1
1
1
1
...
1

等等。

4

1 回答 1

1

您只想将前 62 个观测值分配为 1,将接下来的 62 个观测值分配为 2,依此类推。这是由

egen uniqueid = seq(), block(62)

这里重要的细节是该命令不引用任何现有变量。它们的精确值无关紧要。但你可以去

gen uniqueid = sum(siteid == 1) 

达到同样的效果。您每次得分 1siteid为 1,得到 1 的块后跟 61 个零,它们的累积总和sum()是 1s、2s 等的块。

于 2013-11-02T18:25:39.910 回答