Как объединить наборы данных на основе идентификатора, который не уникален в обоих наборах данных

Когда в Stata два набора данных должны быть объединены на основе одной переменной, которая не уникальна ни в одном из наборов данных, слияние x:x не кажется полезным инструментом. Какая стратегия даст желаемые результаты?

Стилизованный пример:

Набор данных1

AssetManager | Bankcode
A              1
B              2
B              3
C              3

Набор данных2

Bankcode | t    
1          t1          
1          t2     
2          t1    
2          t2    
3          t1    
3          t2    

Цель:

AssetManager | Bankcode | t
A              1         t1
A              1         t2
B              2         t1
B              2         t2
B              3         t1
B              3         t2
C              3         t1
C              3         t2

Интуиция: некоторые управляющие активами могут принадлежать нескольким банкам, а некоторые банки также владеют несколькими управляющими активами.


person Luks    schedule 04.02.2016    source источник
comment
Вместо merge x:x, я думаю, вы имеете в виду merge m:m.   -  person Roberto Ferrer    schedule 04.02.2016
comment
Слияние x:x должно было включать 1:m, m:1, m:m.   -  person Luks    schedule 05.02.2016


Ответы (1)


Использование merge m:m не рекомендуется (прочитайте соответствующие записи в руководствах Stata), и многие люди поддерживают его устранение. Попробуйте joinby:

clear
set more off

input ///
str1 AssetManager Bankcode
A              1
B              2
B              3
C              3
end

tempfile first
save "`first'"

clear

input ///
Bankcode str2 t    
1          t1          
1          t2     
2          t1    
2          t2    
3          t1    
3          t2    
end

joinby Bankcode using "`first'"

sort AssetManager Bankcode t
order AssetManager Bankcode
list, sepby(AssetManager)
person Roberto Ferrer    schedule 04.02.2016