Hallo zusammen!
Auch ich habe mit SPSS ein kleines/großes Problem im Rahmen einer Datenauswertung in Anwendung der sog. Ziffernanalyse. Was ich eigentlich machen möchte, ist die Häufigkeiten der Anfangsziffern verschiedener Variablen zu bestimmen. Enthält eine Variable also z.B. die Werte 1, 22, 27, 300, 789, 541, so hätte ich gerne eine Häufigkeitstabelle mit dem Inhalt 1x1, 2x3, 1x3, 1x7 und 1x5.
Nachdem ich mich etwas in das Programm eingearbeitet habe, hatte ich mir auch einen Ansatz für das Problem überlegt. Um zwar habe ich für jede Variable folgenden Befehl ausgeführt:
STRING abcd_1 (A10).
COMPUTE abcd_1=CHAR.SUBSTR(STRING(ABS(abcd),F10.2),1,1).
VARIABLE LABELS abcd_1 'XYZ'.
Ich wandle also zunächst den Betrag der Zahl (numerischer Ausdruck) in eine Zeichenkette und greife in dieser auf die erste Stelle zu.
Nun musste ich leider feststellen, dass dieser Befehl nicht zuverlässig funktioniert und die neue Variable abcd_1 in einer Vielzahl der Fälle nur einen Bruchteil an ersten Ziffern enthält. Kann mir vllt. jemand von euch hier weiterhelfen? Wo kann das Problem liegen?
Ich habe bereits herausgefunden, dass die Konvertierung in den String problemlos verläuft. Also scheint es lediglich ein Problem mit dem Befehl char.substr(...) zu geben, welcher die Stelle der Zeichenkette scheinbar nicht korrekt extrahiert.
Ist die Vorgehensweise in der Form überhaupt nötig, oder gibt es hier auch einfachere Varianten, die vllt. zuverlässiger funktionieren? Für jeden Tipp bin ich unendlich dankbar!
Extraktion der ersten Ziffer
-
- Beiträge: 94
- Registriert: 31.07.2014, 18:08
Hallo,
folgende Syntax müsste den Zweck erfüllen:
Wesentlich ist die Funktion "LTRIM", denn bei der Umwandlung von Daten in Strings oder umgekehrt passieren manchmal unerwünschte Digen wie dass vor oder nach den Inhalten noch Leerzeichen eingefügt werden (was mit der Länge der Inhalte und der Variablendefinitionen zu tun hat). Manchmal braucht man auch "RTRIM".
Gruß,
Daniel
folgende Syntax müsste den Zweck erfüllen:
Code: Alles auswählen
STRING abcd_1 (A10).
compute abcd_1=CHAR.SUBSTR(ltrim(string(abcd, f10.0)),1,1).
compute zahl1=number(abcd_1, f1.0).
exe.
fre zahl1.
Gruß,
Daniel