我需要每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)
但这些都不会产生预期的结果。
siteid 1 2 3 4 ... 62 1 2 3 4 ... 62 1 2 3 4 ... 62
等等
visits 3 3 3 3 ... 3 1 1 1 1 ... 1
等等。
答案 0 :(得分:1)
您只需要为前62个观察分配1,将下一个62分配为2,依此类推。这是由
完成的egen uniqueid = seq(), block(62)
这里的重要细节是该命令不引用任何现有变量。他们的确切价值无关紧要。但你可以去
gen uniqueid = sum(siteid == 1)
达到同样的效果。每次siteid
为1时得分为1,得到1的块后跟61个零,而sum()
的累计和则为1s,2s等的块。