2017-05-04 5 views
1

Ich möchte verschiedene SPSS-Dateien zu einer neuen Datei zusammenführen. Ich plane, den Befehl MATCH in SPSS dafür zu verwenden. Siehe auch eine andere Frage von mir zu diesem Thema (Combining add cases and add variables by merging files in SPSS).Dateien zusammenführen, wenn im angegebenen Ordner verfügbar

Die Anzahl der Dateien, die ich zusammenführen möchte, ist jedoch nicht immer gleich. Dies hängt von den Daten ab, die ein Kunde angefordert hat. Auf der anderen Seite wird jede Datei immer im selben MATCH-Befehl verwendet.

Zum Beispiel haben wir 7 Dateien mit Daten zur Gesundheit. Wenn der Kunde alle Daten angefordert hat, sollten alle 7 Dateien in einer neuen Datei zusammengeführt werden. Wenn jedoch ein anderer Kunde nur Daten aus 3 Dateien angefordert hat, sollten nur diese 3 Dateien zu einer neuen Datei zusammengeführt werden.

Ich frage mich, ob jemand weiß, wie ich das erreichen kann. Vielleicht sollten die Dateien in einem bestimmten Ordner abgelegt werden, damit die vorhandenen Dateien geladen/angepasst werden können? Die nicht vorhandenen Dateien sollten ignoriert werden. Vielleicht eine Art "Wenn-Dann-Aussage"?

Vielen Dank im Voraus!

Antwort

1

Was ich tun würde, ist das Folgende. Könnte nicht der effizienteste Weg sein, aber es funktioniert gut ...

Ich nehme an, Sie für jeden Kunden eine Datei mit einem Datensatz haben, und 7 Variablen die Notwendigkeit für jede der Dateien anzeigt, wie folgt aus:

data list /ID 1-3 (A) FIL1 to FIL7 5-11. 
begin data 
001 1100101 
002 0100110 
003 0011111 
004 1111111 
end data. 

Ich mag immer den folgenden altmodischen Ansatz. Keine Makros und kein Python!

str matchcommand (a2000). 
compu matchcommand eq "match files". 
do rep a = FIL1 to FIL7 
     /b = "C:\fil1.sav" "C:\fil2.sav" "C:\fil3.sav" "C:\fil4.sav" 
      "C:\fil5.sav" "C:\fil6.sav" "C:\fil7.sav". 
if a matchcommand eq concat(matchcommand, "\n /file='", b, "'"). 
end rep. 

compu matchcommand eq concat(matchcommand, " /by id.") 

Die Saiten in matchcommand können (s) mit dem write Befehl .sps Datei geschrieben werden. Wenn Sie diesen Syntaxelementen einen Befehl zum Speichern hinzufügen, können Sie die Syntaxbits oder Dateien einfach mit insert file aufrufen.

Die Verwendung von Makros oder Python ist weitaus flexibler als dieser Ansatz. Allerdings erinnere ich mich immer an diesen und ich kann es in kürzester Zeit notieren. Es könnte rostig sein, aber es ist schnell. Deshalb mag ich es so sehr.

2

Sie können einen MATCH FILES-Befehl für alle Dateien in einem Ordner oder alle Dateien generieren und ausführen, die einem Platzhalternamen mit einigen Zeilen Python-Code entsprechen. Hier ist ein Beispiel, das alle Sav-Dateien in einem bestimmten Ordner zusammenführt.

begin program. 
import spss, glob 

cmd = ["MATCH FILES"] 

for f in glob.glob(r"c:/temp/*.sav"): 
    cmd.append("""/FILE="%s" """ % f) 
spss.Submit(cmd) 
end program. 
+0

fehlt 'by' Befehl? –

+0

Man müsste dem Befehl bei Bedarf beliebige Modifikatoren hinzufügen. – JKP

Verwandte Themen