Seite 1 von 1

Matchen/Mergen von Daten mit unterschiedlichen ID-Varianten

BeitragVerfasst: Mi 26. Okt 2011, 11:03
von Yellowdog
Hallo,

ich habe zwei Datensätze mit unterschiedlichen ID-Typen, die aber auf gleichen Fällen beruhen. Dabei sind die IDs des einen Datensatzes in der ID des anderen mit enthalten...z.b. 7-1234-567-89 vs. 1234-56. Die Stellenanzahl beider ID-Typen kann dabei variieren, sicher ist nur, das beide "unique" sind und die kürzere in jedem Fall (ausgenommen Datenfehler) nur in eine längere reinpasst. Gibts da eine Lösung für STATA, die Daten zu matchen/mergen? Eine SPSS-Lösung würde auch gehen, ich arbeite beiden Programmen. ...bzw mir würde eine Anpassung der IDs schon reichen, das Zusammenführen ist dann kein Problem mehr.

Vielen Dank für Eure Hilfe,
Y.

Re: Matchen/Mergen von Daten mit unterschiedlichen ID-Varian

BeitragVerfasst: Mi 26. Okt 2011, 13:22
von daniel
Zunächst möchte ich darauf hinweisen, dass das was Du vorhast aufgrund der Datenbeschaffenheit sehr Fehleranfällig aussieht. Auf eine Variable zu -merge-n ist prinzipiell schon suboptimal, aber was Du da hast sieht wirklich nicht vertrauenswürdig aus. Vgl. auch http://blog.stata.com/2011/04/18/mergin ... -gone-bad/ sowie den zweiten Teil.

Ich nehme an beide Variablen liegen als string variable vor, da "-" kein valides nummerisches Zeichen ist. Ich könnte mir folgeden (pseudo-)code vorstellen:

Definitionen

data_short: Datensatz mit kurzen ids
data_long: Datensatz mit lagen ids
id: Variablenname der die ids enthält

Code: Alles auswählen
* get list of short ids
use data_short.dta ,clear
qui levelsof id ,l(lvls)

* change long id to short id
use data_long.dta ,clear
clonevar old_id = id //copy old id
foreach l of loc lvls {
    qui replace id = "`l'" if strpos(old_id, "`l'")
}

* check id
isid id

* merge the data
merge 1:1 id using data_short


Keine Garantie.