Отбросьте все дубликаты, в том числе по горизонтали - PullRequest
0 голосов
/ 06 октября 2018

Мои данные выглядят так:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float id strL acro
788 "SJK DFG"                        
788 "GKH DFG TYI HJK"                
788 "TYO SJK BNM"                    
832 "JKH SJK VNM ASD SJK ORY GKH EWR"
832 "DFK ASK YUR"                    
832 "ASD"                            
832 "DLW"                            
832 "IPY BNM"                        
end

Я хотел бы сохранить значения только один раз, как показано ниже:

id  acro  
788 SJK DFG  
788 GKH TYI HJK  
788 TYO BNM  
832 JKH SJK VNM ASD ORY GKH EWR  
832 DFK ASK YUR  
832 DLW  
832 IPY BNM  

Можно ли это сделать с помощью команды duplicates?

1 Ответ

0 голосов
/ 06 октября 2018

Вам необходимо reshape сначала ввести данные в длинную форму, а затем использовать команду duplicates:

clear

input id strL acro 
788 "SJK DFG"          
788 "GKH DFG TYI HJK"   
788 "TYO SJK BNM"
832 "JKH SJK VNM ASD SJK ORY GKH EWR"         
832 "DFK ASK YUR"
832 "ASD"
832 "DLW"
832 "IPY BNM"      
end

split acro
drop acro

bysort id: generate i = _n
reshape long acro, i(id i)

drop if missing(acro)
duplicates drop id acro, force

Далее, вы reshape в широком формате и объедините строковые переменные:

reshape wide acro, i(id i)

egen acro = concat(acro*), punct(" ")
drop i acro?

list, sepby(id)

     +-----------------------------------+
     |  id                          acro |
     |-----------------------------------|
  1. | 788                       SJK DFG |
  2. | 788                   GKH TYI HJK |
  3. | 788                       TYO BNM |
     |-----------------------------------|
  4. | 832   JKH SJK VNM ASD ORY GKH EWR |
  5. | 832                   DFK ASK YUR |
  6. | 832                           DLW |
  7. | 832                       IPY BNM |
     +-----------------------------------+
...