Hallo an alle,
ich hatte gestern die Frage im Statistik Forum gepostet - eigentlich gehört er eher hier zum SPSS Bereich. Vielleicht kann mir jemand helfen.
Ich arbeite gerade mit SOEP Daten und möchte aus der Personen ID (pershhnr) nur die letzten beiden Zeichen auslesen und in der neuen Variable pershhnr_1 speichern. Ich weiß, dass man mit der Funktion (in diesem Fall):
Compute pershhnr_1=Char.substr(ltrim(string (pershhnr, f9.0)),2,2) zwei Zeichen ab der zweiten Stelle extrahieren kann.
Nun habe ich aber folgendes Problem. Die Personen IDs haben unterschiedliche Längen, demnach kann ich keine "feste" Stelle angeben von der aus die Zeichen extrahiert werden. Sie sind 5 bis 8 Zeichen lang. Mir sind zwei Wege eingefallen mit denen obige Funktion angewendet werden könnte.
(1) In dem man alle PersonenIDs mit führenden Nullen "auffüllt" bis sie 8 Zeichen haben.
(2) In dem man in die obige Funktion statt einer festen Anfangsstelle eine relative einfügt. Hierzu habe ich eine Variable Berechnet, die die Länge der Variable Pershhnr ausgibt. Zieht man von dieser neuen Variable (Persnr_Laenge) nun 2 ab, so erhält man immer die richtige Stelle von der an die letzten zwei Zahlen extrahiert werden sollen.
Wie würde hierfür der Code aussehen- kann man einen numerischen Ausdruck in einer Funktion überhaupt aus einer Variable "auslesen" lassen?
Ich hoffe meine Ausführungen sind verständlich genug, wenn nicht fragt bitte nach.
Vielen Dank für eure Mühe!
VG Julia
numerischen Wert für Funktion aus Variable auslesen
-
- Beiträge: 2
- Registriert: 13.05.2019, 14:10
-
- Beiträge: 2734
- Registriert: 01.02.2018, 10:45
Re: numerischen Wert für Funktion aus Variable auslesen
hallo
du meinst so was in der art:
compute x = 3.
COMPUTE blabla = SUBSTR(VAR00002, x ,2) .
EXECUTE .
bei mir geht das nicht..
vielleicht wenn:
du mehrere substr befehle hintereinander schaltest in abhängigkeit
von der länge
if LENGTH(RTRIM(strAusdr))= 5.
COMPUTE blabla = SUBSTR(VAR00002, 4 ,2)
so in etwa
gruß
dutchie
du meinst so was in der art:
compute x = 3.
COMPUTE blabla = SUBSTR(VAR00002, x ,2) .
EXECUTE .
bei mir geht das nicht..
vielleicht wenn:
du mehrere substr befehle hintereinander schaltest in abhängigkeit
von der länge
if LENGTH(RTRIM(strAusdr))= 5.
COMPUTE blabla = SUBSTR(VAR00002, 4 ,2)
so in etwa
gruß
dutchie