Мой вопрос касается обнаружения дубликатов. Скажем, у меня есть следующие данные:Обнаружение дубликатов
clear all
input str2 pos str10 name
A Joe
A Joe
B Frank
C Mike
C Ted
D Mike
D Mike
E Bill
F Bill
end
Если я хочу, чтобы обнаружить все повторяющиеся имена, я бы просто наберите:
duplicates tag name, gen(flag)
Это дает мне:
pos name flag
A Joe 1
A Joe 1
B Frank 0
C Mike 2
C Ted 0
D Mike 2
D Mike 2
E Bill 1
F Bill 1
Это здорово - это указывает на то, что Joe
, Mike
и Bill
являются дубликатами.
Но предположим, что я не хочу включать дубликаты, которые дублируются только в пределах pos
. Другими словами, я не хочу найти, что Joe
дублируется, потому что Джо появляется только в пределах pos
A
. Я только хочу найти, что Mike
и Bill
являются дубликатами. (. В то время как Mike
дублируется в D
, он также появляется в C
, поэтому он появляется в более чем один pos
)
Другими словами, я хочу:
pos name flag
A Joe 0
A Joe 0
B Frank 0
C Mike 1
C Ted 0
D Mike 1
D Mike 1
E Bill 1
F Bill 1
Обратите внимание, что здесь Mike
принимает flag
только из 1
вместо 2
. Это потому, что я обрабатываю Mike
в D
как показано только один раз, а не дважды. Наличие 2
вместо 1
не вызывает проблем, если это дает решение.
Есть ли способ сделать это?
Спасибо! Рад получить ответ от мирового эксперта по этому вопросу. – bill999