使用第一个出现ID标记重复项

时间:2015-08-14 13:51:20

标签: duplicates stata

我使用cluster命令,因内存不足而遇到困难。为了解决这个问题,我想删除所有重复的观察结果。

我想通过变量A,B和C进行聚类,并且我确定重复值如下:

   /* Create dummy data */
     input id A B C
        1 1 1 1
        2 1 1 1
        3 1 1 1
        4 2 2 2
        5 2 2 2
        6 2 2 2
        7 2 2 2 
        8 3 3 3
        9 3 3 3
        10 4 4 4
        end

sort A B C id

duplicates tag A B C, gen(dup_tag)

我想添加一个变量dup_ID,它告诉我id s 2和3是id 1,id s 5和6 {{{的重复项1}} 4,依此类推。我怎么能这样做?

id

2 个答案:

答案 0 :(得分:2)

duplicates是一个很棒的命令(请参阅我的手册条目,为什么我这么说),但你可以直接这样做:

bysort A B C : gen tag = _n == 1

将第一次出现的重复A B C标记为1,将所有其他重复标记为0.反过来使用_n > 1_n != 1或其他任何方式。

编辑:

那么标记观察的id只是

by A B C: gen dup_id = id[1] 

有关by:的基本技巧,请参阅(例如)this discussion

答案 1 :(得分:1)

您可以使用kCGImageSourceThumbnailMaxPixelSize上的下标A B C来引用每组[1]中的第一个观察结果。请注意ID中的(id)参数,该参数按bysort排序,但仅按idAB标识这些组。

C

产生

clear
input id A B C
1 1 1 1
2 1 1 1
3 1 1 1
4 2 2 2
5 2 2 2
6 2 2 2
7 2 2 2 
8 3 3 3
9 3 3 3
10 4 4 4
end

bysort A B C (id): gen dup_id = id[1]
li, noobs sepby(dup_id)