Stata:将非重复行计为重复行
Stata: Counts non-duplicate rows as duplicates
考虑以下代码来检测重复项,从 faq 开始:
. quietly by date id: gen dup = cond(_N==1,0,_n)
. browse date id dup
这是输出:
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
我不明白为什么第三行 (360, 1017, 1)
是重复的 (dup==1
)...它是 ID 为 1017
的第一行。我错过了什么?
我正在使用 Stata 12。
你逻辑混乱了。
对于每个组,由带有 by
前缀的变量确定,如果有多个观察值,则计数从 1 开始(参见 help _n
)。变量 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
)。
考虑以下代码来检测重复项,从 faq 开始:
. quietly by date id: gen dup = cond(_N==1,0,_n)
. browse date id dup
这是输出:
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
我不明白为什么第三行 (360, 1017, 1)
是重复的 (dup==1
)...它是 ID 为 1017
的第一行。我错过了什么?
我正在使用 Stata 12。
你逻辑混乱了。
对于每个组,由带有 by
前缀的变量确定,如果有多个观察值,则计数从 1 开始(参见 help _n
)。变量 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
)。