Hey Leute,
ich hab ne ziemliche Anfänger-Frage (ist das erste Mal, dass ich mich mit SPSS Syntax befasse) und habe jetzt zwei Stunden im Netz gesucht und probiert, aber irgendwie will es nicht hinhauen.
Ich habe in meinem Datensatz in den Var V6 bis V44 anstelle einer Zahl von 1-7 immer einen String a la "Sem1", "Sem2" etc. stehen. Jetzt will ich eigentlich die ersten drei Stellen löschen und dann den String in einen Integer verwandeln. Müsste doch eigentlich nicht so schwer sein, oder?
RECODE V6 TO V44
('Sem1'='1')
('Sem2'='2')
('Sem3'='3')
('Sem4'='4')
('Sem5'='5')
('Sem6'='6')
('Sem7'='7').
EXECUTE.
Wäre mein Ansatz, um das "Sem" rauszubekommen. Aber irgendwie tut sich in meinem Datensatz nichts. Und dann wollte ich noch fragen, ob ich die Werte danach automatisch alle von String2Int parsen kann.
Geht da vllt. etwas a la
COMPUTE V6 TO V44 ??
Besten Dank schon ein Mal für Eure Hilfe. Ich bin mir sicher, dass das für Euch lächerlich einfach ist ^^.
Cheers
Pas
Stelle aus String auslesen und in int parsen
-
- Beiträge: 4
- Registriert: 12.05.2010, 11:10
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52
hier sind die notwendigen fuktionen beschrieben: http://pascal.kgw.tu-berlin.de/gnom/Leh ... ionen.html
string2int parsen sagt mir nichts.
string2int parsen sagt mir nichts.
-
- Beiträge: 4
- Registriert: 12.05.2010, 11:10
Die REMODE Funktion ist dort aber leider nicht aufgelistet. Habe es zuerst auch mit Substring probiert a la:KarinJ hat geschrieben:hier sind die notwendigen fuktionen beschrieben: http://pascal.kgw.tu-berlin.de/gnom/Leh ... ionen.html
string2int parsen sagt mir nichts.
SUBSTR(variable, position) -> Position wäre in meinem Fall ja 4, aber es gab immer die Fehlermeldung, dass ein Argument fehlte.
Mit Parsen meinte ich, dass man nach dem Ändern die String Variable ('7') bspw. in eine numerische Var umwandelt (7). Dies kann ich ja mit NUMBER machen ( also NUMBER(7,F1) oder?). Aber bevor ich das tun kann, muss ja erstmal das "Sem" rauskriegen.
RECODE V6(SUBSTR(V6, 4)).
>Fehler Nr. 4652 in Spalte 11. Text: SUBSTR
>Unrecognized text appears on the RECODE Befehl in den Wertangaben.
>Dieser Befehl wird nicht ausgeführt.
Vielleicht verstehe ich die Logik hinter SPSS auch noch nicht so recht. In Java würde ich dem Wert der Variable 6 einfach einen neuen Wert zuweisen (den mir die Funktion Substring ausspuckt). Aber hier ist die Syntax wohl anders. :/
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52
ich habs gerade mal ausprobiert. man kann beim umcodieren auch strings statt zahlen angeben (alter wert = buchstabenkette, neuer wert = zahl). in der syntax wird die buchstabenkette lediglich in halbe anführungszeichen gesetzt z.b. 'sem1'
beispiel, wo aus xx 1 und aus yx 2 gemacht wird:
RECODE
var2
('xx'=1) ('yx'=2) INTO var2b .
EXECUTE .
grundsätzlich würde ich nicht versuchen, alles in einem wisch umzusetzen, sondern ggf. hilfsvariablen (hier für den herausschnitt) erstellen. so erhält man mehr übersicht und kontrolle.
substr wäre richtig gewesen, ggf. muss man noch mit ltrim oder rtrim leere stellen herausschneiden.
beispiel, wo aus xx 1 und aus yx 2 gemacht wird:
RECODE
var2
('xx'=1) ('yx'=2) INTO var2b .
EXECUTE .
grundsätzlich würde ich nicht versuchen, alles in einem wisch umzusetzen, sondern ggf. hilfsvariablen (hier für den herausschnitt) erstellen. so erhält man mehr übersicht und kontrolle.
substr wäre richtig gewesen, ggf. muss man noch mit ltrim oder rtrim leere stellen herausschneiden.
-
- Beiträge: 4
- Registriert: 12.05.2010, 11:10
Also ich habe einmal folgendes ausprobiert:KarinJ hat geschrieben:ich habs gerade mal ausprobiert. man kann beim umcodieren auch strings statt zahlen angeben (alter wert = buchstabenkette, neuer wert = zahl). in der syntax wird die buchstabenkette lediglich in halbe anführungszeichen gesetzt z.b. 'sem1'
beispiel, wo aus xx 1 und aus yx 2 gemacht wird:
RECODE
var2
('xx'=1) ('yx'=2) INTO var2b .
EXECUTE .
grundsätzlich würde ich nicht versuchen, alles in einem wisch umzusetzen, sondern ggf. hilfsvariablen (hier für den herausschnitt) erstellen. so erhält man mehr übersicht und kontrolle.
substr wäre richtig gewesen, ggf. muss man noch mit ltrim oder rtrim leere stellen herausschneiden.
RECODE V6 TO V44
('Sem1'=1)
('Sem2'=2)
('Sem3'=3)
('Sem4'=4)
('Sem5'=5)
('Sem6'=6)
('Sem7'=7)
INTO NEW6 TO NEW44 .
EXECUTE.
SPSS erstellt mir zwar die neuen Variablen (diese sind auch numerisch). Aber es fehlen die Werte :/.
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52

mit etwas glück zaubert ein klick auf das symbol "speichern" die werte hervor?
bei mir ging es nicht und es lag eindeutig an dem TO. ich dachte zuerst, es könnte THRU heissen, aber das funktioniert auch nicht. es wurde nur eine variablenliste akzeptiert.
vielleicht kann man eine schleife einbauen, aber ich kriege es nicht zustande.
-
- Beiträge: 4
- Registriert: 12.05.2010, 11:10
Ai, ich Doofi. Ein Klick auf Speichern und tada- alles funktioniert.
Hab's übrigens so gelöst:
* Wir entfernen das Sem
RECODE V6 TO V44
('Sem1' = '1')
('Sem2' = '2')
('Sem3' = '3')
('Sem4' = '4')
('Sem5' = '5')
('Sem6' = '6')
('Sem7' = '7')
INTO V6 TO V44.
EXECUTE.
* Und verwandeln die Strings in Numbers -> Um damit rechnen zu können.
ALTER TYPE V6 TO V44 (F1.0).
EXECUTE.
Läuft super! Besten Dank für die Hilfe.
Cheers
Joe
Hab's übrigens so gelöst:
* Wir entfernen das Sem
RECODE V6 TO V44
('Sem1' = '1')
('Sem2' = '2')
('Sem3' = '3')
('Sem4' = '4')
('Sem5' = '5')
('Sem6' = '6')
('Sem7' = '7')
INTO V6 TO V44.
EXECUTE.
* Und verwandeln die Strings in Numbers -> Um damit rechnen zu können.
ALTER TYPE V6 TO V44 (F1.0).
EXECUTE.
Läuft super! Besten Dank für die Hilfe.
Cheers
Joe
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52