IBM SPSS Statistics Datumsvariablen aus Text erzeugen

IBM SPSS Statistics beinhaltet zwar eine vielzahl an Datumsformaten, jedoch kann es gerade bei Daten aus älteren Datenbanksystemen oder Maschinen passieren, dass Datumsangaben nicht mit Trennzeichen zwischen Tagen, Monaten und Jahren vorliegen. Sollen diese Datumsangaben jedoch bei Analysen berücksichtigt werden, weil z.B. nur bestimmte Zeiträume analysiert werden sollen, müssen die Informationen zuerst in ein von SPSS lesbares Format überführt werden, ehe auf Zeitpunkte und Zeiträume gefiltert werden kann.

Ausgangspunkt für diese Demonstration sind Textdaten, die Datumswerte enthalten.
Zuerst wird ein Testdatensatz erzeugt:

*Erstellen des Testdatensatzes.
 NEW FILE.
DATA LIST
    /Date 1-6 (A) Umsatz 8-15 .
Begin Data
280714 15000,15
050714 30000,00
140714 285,00
080714 58935,00
280714 15000,15
050714 30000,00
140714 285,00
080714 58935,00
END Data.


Dies erzeugt folgenden Datensatz:


Die Variable "Date" enthält dabei Datumsangaben im Format TTMMJJ ohne Trennzeichen.
Diese Variable wird nun in drei Hilfsvariablen Jahr, Monat und Tag zerlegt:

*Erzeugen der Hilfsvariablen für Tag, Monat und Jahr.
COMPUTE Jahr=NUMBER(CHAR.SUBSTR(date,5,2),F2).
COMPUTE Monat=NUMBER(CHAR.SUBSTR(date,3,2),F2).
COMPUTE Tag=NUMBER(CHAR.SUBSTR(date,1,2),F2).
EXECUTE.

Aus diesen drei Variablen kann eine für SPSS lesbare Datumsvariable im Format TT.MM.JJ erzeugt werden:

*Bilden der Datumsvariablen.
COMPUTE Datum=DATE.DMY (Tag, Monat, Jahr).
FORMATS Datum (EDATE8).
EXECUTE.

Dies führt zu folgendem Datensatz:

Jetzt kann eine Filtervariable erzeugt werden, um den Gesamtmsatz vom 1.6.14 - 15.6.14 zu analysieren:

*Filtern auf den Zeitraum 1.6.14 bis 15.6.14.
USE ALL.
COMPUTE Zeitraum = RANGE(Datum,DATE.DMY(1,6,14),DATE.DMY(15,6,14)).
FILTER BY Zeitraum.
*Erzeugen einer Häufigkeitsauszählung ohne Häufigkeitstabelle.
FREQUENCIES VARIABLES=Umsatz
  /STATISTICS=SUM
  /FORMAT=NOTABLE
  /ORDER=ANALYSIS.

Alternativ kann auf die Bildung der Filtervariablen verzichtet und folgende Schreibweise genutzt werden:

*Filtern auf den Zeitraum 1.6.14 bis 15.6.14.
USE ALL.
TEMPORARY.
SELECT IF RANGE(Datum,DATE.DMY(1,6,14),DATE.DMY(15,6,14)).
FREQUENCIES VARIABLES=Umsatz
  /STATISTICS=SUM
  /FORMAT=NOTABLE
  /ORDER=ANALYSIS.

Um auf einen definierten Zeitpunkt zu filtern, wird der Ausdruck entsprechend verkürzt, die Alternativschreibweise mit „select if“ ist auch hier problemlos möglich:

*Filtern auf den 14.6.14.
USE ALL.
COMPUTE Zeitpunkt = Datum=DATE.DMY(14,6,14).
FILTER BY Zeitpunkt.
FREQUENCIES VARIABLES=Umsatz
  /STATISTICS=SUM
  /FORMAT=NOTABLE
  /ORDER=ANALYSIS.

Oder:

USE ALL.
TEMPORARY.
SELECT IF Datum=DATE.DMY(14,6,14).
FREQUENCIES VARIABLES=Umsatz
  /STATISTICS=SUM
  /FORMAT=NOTABLE
  /ORDER=ANALYSIS.

Autor: Alexander Rausch-Jaretzke