Bool'sche Operatoren im Zusammenhang mit Uhrzeit-Variablen

Alles rund um SPSS Syntax und Programmierung.

Bool'sche Operatoren im Zusammenhang mit Uhrzeit-Variablen

Beitragvon miner » Fr 27. Mär 2020, 16:40

Hallo,

ich bin in der Situation, dass ich bool'sche Vergleiche im Zusammenhang mit Datums-Variablen (genauer: Uhrzeit-Variablen) umsetzen will.

Im Einzelnen habe ich diesen Befehl umgesetzt:

Code: Alles auswählen
if (Uhrzeit_extrahiert GE 22:00) filter_nachttrades = 1.
execute.


Es kommt allerdings dann die Fehlermeldung, dass der Ausdruck unvollständig wäre. Der Befehl an sich scheint syntaktiv korrekt zu sein, wenn ich "22:00" durch einen numerischen Wert, z.B. "3" ersetze, verschwindet nämlich die Fehlermeldung.

Bisher habe ich noch keine Lösung gefunden. Es nützt auch nichts, den Wert der Uhrzeit in Anführungsstrichen zu schreiben.

Ein mögliches Workaraound wäre natürlich, die Uhrzeit in eine numerische Variable zu konvertieren und dann dort die Vergleiche durchzuführen. Das wäre allerdings umständlich, und auch nicht besonders elegant.

Danke mal, es muss eine bessere Möglichkeit finden, die ich allerdings noch nicht gefunden habe.

Bis dahin freue ich mich über jeden Hinweis. :)

Grüße,
Miner
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post

Re: Bool'sche Operatoren im Zusammenhang mit Uhrzeit-Variabl

Beitragvon strukturmarionette » Sa 28. Mär 2020, 23:12

Hi,

- du kannst Datumsvariablen beibehalten wie sie sind und vergleichen

Gruß
S.
strukturmarionette
 
Beiträge: 2449
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 7
Danke bekommen: 122 mal in 122 Posts

Re: Bool'sche Operatoren im Zusammenhang mit Uhrzeit-Variabl

Beitragvon miner » So 29. Mär 2020, 15:19

strukturmarionette hat geschrieben:Hi,

- du kannst Datumsvariablen beibehalten wie sie sind und vergleichen

Gruß
S.


Nein, kann ich nicht. Bzw. wenn ich es mache, erscheint eine Fehlermeldung, siehe EP.

Wollte gerade einen Beispiel-Datensatz zur Verdeutlichung hochladen, dummerweise erlaubt das Forum keinen sav-Upload und auch keinen der Exporte die ich ausprobiert habe (txt, csv etc). Habe daher den Beispiel-Datensatz bei einem Image-Hoster hochgeladen:

http://www.imagenetz.de/f7b6fa3bc/Beispieldatensatz-Forum.sav.html

Wenn Du den folgenden Code auf dem Datensatz ausführst, erscheint eine Fehlermeldung:


Code: Alles auswählen
if (Uhrzeit_extrahiert GE 22:00) filter_nachttrades = 1.
execute.


Der folgende Code führt auf dem Beispiel-Datensatz zu keiner Fehlermeldung, aber auch nicht zum richtigen Ergebnis, da die 3 als Wert willkürlich gesetzt ist:

Code: Alles auswählen
if (Uhrzeit_extrahiert GE 3) filter_nachttrades = 1.
execute.


Ich könnte mir denken, dass SPSS probleme mit der 22:00 hat, d.h., dass ich SPSS irgendwie signalisieren muss, dass 22:00 ein Datum vom Typ "Datum" ist. Das setzen von einfachen oder doppelten Anführungsstrichen um 22:00 hat das Problem nicht gelöst und eine weitere Idee hatte ich bisher nicht. Habe bisher auch kein funktionierendes Beispiel bei Dr. Google gefunden.

Über Tipps oder Lösungsvorschläge freue ich mich immer noch! :)

Besten Dank und Grüße,
Miner
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post

Re: Bool'sche Operatoren im Zusammenhang mit Uhrzeit-Variabl

Beitragvon miner » Mo 30. Mär 2020, 12:52

Mittlerweile habe ich es hinbekommen, dass die Fehlermeldung verschwindet. Indem ich den Vergleichswert für den Bool'schen Vergleich nicht mehr direkt in die Syntax schreibe, sondern in eine eigene, neu erzeugte Variable und die beiden Variablen (beide vom gleichen Formattyp Datum) dann mit der Syntax direkt vergleiche.

Die Fehlermeldung ist dann weg. Dummerweise ist die gewünschte Codierung dann in meiner Zielvariablen dennoch nicht enthalten, aus welchen Gründe auch immer. Würde mich freuen, wenn mir jemand vielleicht einen Fingerzeig geben kann, um den Fehler oder wenigstens ein Workaround zu finden.

Ich poste unten stehend die entsprechenden Syntaxen und erneut einen Beispiel-Datensatz auf dem sich die Syntax-Schnipsel ausführen lassen, um das Phänomen zu replizieren.

Code: Alles auswählen
compute Filter_Nachttrades = $sysmis.
execute.

if (Uhrzeit_extrahiert GE Nachtrading_Start_R AND Uhrzeit_extrahiert LT Nachtrading_Ende_R) Filter_Nachttrades = 1.
execute.



Hier noch der Link zum (neuen) Beispiel-Datensatz:

http://www.imagenetz.de/f011033cf/Beisp ... z.sav.html
miner
 
Beiträge: 86
Registriert: Do 12. Sep 2013, 16:54
Danke gegeben: 6
Danke bekommen: 0 mal in 0 Post


Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast