2016-12-12 7 views
2

Ich habe zwei Datensätze, nennen wir sie D1 und D2. D2 enthält ein paar Variablen, die ich zu D1 hinzufügen möchte. D2 ist im Wesentlichen eine eingeschränkte Menge der Daten von D1, aber mit einer zusätzlichen Variablen. Problem ist, ich kann nicht Merge verwenden, weil die Name String-Variable in D2 geschaltet wurde. Wie in D1 wird jeder Eintrag der Variablen Name als Word1 Word2 gelesen, während er in D2 als Word2 Word1 gelesen wird.Problem beim Zusammenführen von Daten in SPSS

Wie finde ich die Einträge in D1, die auch in D2 vorkommen, und füge ihre fehlenden Variablen aus D2 hinzu?

Sehr glücklich, Python zu verwenden, um dieses zu lösen, wenn es benötigt wird.

+0

für alle String-Variablennamen, die Breite sollte gleich sein und dann können Sie zusammenführen. Sie können die Funktion alter type verwenden, zB alter type var1 (A 600). – rawatdeepesh

Antwort

1

Zunächst lässt ein funktionierendes Beispiel erstellen:

data list list/name (a20) v1 (f1) v2(f1). 
begin data 
"hello world" 1 2 
"huff puff" 3 4 
"word1 word2" 5 6 
end data. 
dataset name D1. 

data list list/name (a20) y1 (f1) y2(f1). 
begin data 
"world hello" 11 12 
"puff huff" 13 14 
"word2 word1" 15 16 
end data. 
dataset name D2. 

Jetzt wollen wir die beiden Dateien mit name als Schlüssel passen, aber die Worte in name sind in D2 umgekehrt. Also zuerst müssen wir sie wieder in Ordnung bringen, indem das zweite Wort zu nehmen und es vor dem ersten setzen:

dataset activate D2. 
rename variables name=Rname. 
string name #n1 #n2(a20). 
compute #n2=substr(Rname,1,index(Rname," ")). 
compute #n1=substr(Rname,index(Rname," ")+1,20). 
compute name=concat(rtrim(#n1), " ", rtrim(#n2)). 
sort cases by name. 

Jetzt können wir die Dateien übereinstimmen gehen zu:

dataset activate D1. 
sort cases by name. 
match files /file=* /tab=D2/by name/drop rname. 
exe. 
Verwandte Themen