Stelle aus String auslesen und in int parsen

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
PassDom
Beiträge: 4
Registriert: 12.05.2010, 11:10

Stelle aus String auslesen und in int parsen

Beitrag von PassDom »

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
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

hier sind die notwendigen fuktionen beschrieben: http://pascal.kgw.tu-berlin.de/gnom/Leh ... ionen.html

string2int parsen sagt mir nichts.
PassDom
Beiträge: 4
Registriert: 12.05.2010, 11:10

Beitrag von PassDom »

KarinJ hat geschrieben:hier sind die notwendigen fuktionen beschrieben: http://pascal.kgw.tu-berlin.de/gnom/Leh ... ionen.html

string2int parsen sagt mir nichts.
Die REMODE Funktion ist dort aber leider nicht aufgelistet. Habe es zuerst auch mit Substring probiert a la:

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. :/
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

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.
PassDom
Beiträge: 4
Registriert: 12.05.2010, 11:10

Beitrag von PassDom »

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.
Also ich habe einmal folgendes ausprobiert:

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 :/.
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

:shock: oh nein, jetzt sind wir wieder am anfang angekommen.

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.
PassDom
Beiträge: 4
Registriert: 12.05.2010, 11:10

Beitrag von PassDom »

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
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

Ai, ich Doofi. Ein Klick auf Speichern und tada- alles funktioniert.
den trick kann man nicht kennen, der steht sicher in keinem handbuch. mir ist das auch nur zufällig mal aufgefallen. man kann es wohl eher eine marotte von spss als einen trick sehen.
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten