Stata:将非重复行计为重复行

Stata:将非重复行计为重复行,stata,Stata,考虑以下代码来检测重复项,如从: 以下是输出: date id dup 360 1003 0 360 1005 0 360 1017 1 360 1017 2 360 1019 1 360 1019 2 360 1019 3 360 10

考虑以下代码来检测重复项,如从:

以下是输出:

date            id    dup
360             1003    0
360             1005    0
360             1017    1
360             1017    2
360             1019    1
360             1019    2
360             1019    3
360             1023    1
360             1023    2
360             1023    3
我不明白为什么第三行
(3601017,1)
是重复的(
dup==1
)。。。它是id为
1017
的第一行。我错过了什么


我在12号站。

你对逻辑感到困惑

对于每个组,根据前缀
by
使用的变量确定,如果有多个观察值,则计数从1开始(请参见
help
)。变量
dup
对于您参考的相应组的最后一次观察(观察4),说明有两个相同的观察:

360             1017    1
360             1017    2
当且仅当不存在重复项时,观察值标记为
0
。例如,观察2:

360             1005    0
检查最小修改代码的结果:

quietly bysort date id:  gen dup2 = cond(_N==1,0,_N)
list, sepby(date id)

这可能对你的原始配方有所帮助。

你得到了你想要的。如果值的组合是唯一的(仅出现一次),则
\N
为1,返回值为0

否则,每组的
\N
值为2或更多,重复(相同)的观察值被指定为值1、2(视情况而定,依此类推)

在这里和其他地方,在指定的变量上识别重复(相同)的观察结果(这里
id date

quietly bysort date id:  gen dup2 = cond(_N==1,0,_N)
list, sepby(date id)