neue Variable "berechnen"
Verfasst von Monamia am 31 Mai, 2009 - 15:27
hi, ich schon wieder ;)
Ich mach folgendes im Rahmen eines Datasteps (siehe unten)
Die Variable KRE_ALTKRE ist nummerisch, drei Stellen.
Die neue Variable KRE_ALTKREGR wird immer nur zweistellig.
Wenn die neue Variable nummerisch ist und daher nur 2 Stellen braucht, klappt alles perfekt.
Was fehlt oder was mach ich falsch?
Ich hab auch schon den ganzen Datensatz gelöscht, damit ich SAS ja nicht irgendwas "merkt", aber es kommt immer wieder falsch.
DATA RVZA;
INFILE a TRUNCOVER;
/*....*/
IF 0<=KRE_ALTKRE<5 THEN KRE_ALTKREGR='i1';
IF 5<=KRE_ALTKRE<10 THEN KRE_ALTKREGR='i2';
IF 10<=KRE_ALTKRE<15 THEN KRE_ALTKREGR='i3';
IF 15<=KRE_ALTKRE<20 THEN KRE_ALTKREGR='i4';
IF 20<=KRE_ALTKRE<25 THEN KRE_ALTKREGR='i5';
IF 25<=KRE_ALTKRE<30 THEN KRE_ALTKREGR='i6';
IF 30<=KRE_ALTKRE<35 THEN KRE_ALTKREGR='i7';
IF 35<=KRE_ALTKRE<40 THEN KRE_ALTKREGR='i8';
IF 40<=KRE_ALTKRE<45 THEN KRE_ALTKREGR='i9';
IF 45<=KRE_ALTKRE<50 THEN KRE_ALTKREGR='i10';
IF 50<=KRE_ALTKRE<55 THEN KRE_ALTKREGR='i11';
IF 55<=KRE_ALTKRE<60 THEN KRE_ALTKREGR='i12';
IF 60<=KRE_ALTKRE<65 THEN KRE_ALTKREGR='i13';
IF 65<=KRE_ALTKRE<70 THEN KRE_ALTKREGR='i14';
IF 70<=KRE_ALTKRE<75 THEN KRE_ALTKREGR='i15';
IF 75<=KRE_ALTKRE<80 THEN KRE_ALTKREGR='i16';
IF 80<=KRE_ALTKRE<85 THEN KRE_ALTKREGR='i17';
IF 85<=KRE_ALTKRE THEN KRE_ALTKREGR='i18';
RUN;
INFILE a TRUNCOVER;
/*....*/
IF 0<=KRE_ALTKRE<5 THEN KRE_ALTKREGR='i1';
IF 5<=KRE_ALTKRE<10 THEN KRE_ALTKREGR='i2';
IF 10<=KRE_ALTKRE<15 THEN KRE_ALTKREGR='i3';
IF 15<=KRE_ALTKRE<20 THEN KRE_ALTKREGR='i4';
IF 20<=KRE_ALTKRE<25 THEN KRE_ALTKREGR='i5';
IF 25<=KRE_ALTKRE<30 THEN KRE_ALTKREGR='i6';
IF 30<=KRE_ALTKRE<35 THEN KRE_ALTKREGR='i7';
IF 35<=KRE_ALTKRE<40 THEN KRE_ALTKREGR='i8';
IF 40<=KRE_ALTKRE<45 THEN KRE_ALTKREGR='i9';
IF 45<=KRE_ALTKRE<50 THEN KRE_ALTKREGR='i10';
IF 50<=KRE_ALTKRE<55 THEN KRE_ALTKREGR='i11';
IF 55<=KRE_ALTKRE<60 THEN KRE_ALTKREGR='i12';
IF 60<=KRE_ALTKRE<65 THEN KRE_ALTKREGR='i13';
IF 65<=KRE_ALTKRE<70 THEN KRE_ALTKREGR='i14';
IF 70<=KRE_ALTKRE<75 THEN KRE_ALTKREGR='i15';
IF 75<=KRE_ALTKRE<80 THEN KRE_ALTKREGR='i16';
IF 80<=KRE_ALTKRE<85 THEN KRE_ALTKREGR='i17';
IF 85<=KRE_ALTKRE THEN KRE_ALTKREGR='i18';
RUN;
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, wenn ich das richtig
Hallo,
wenn ich das richtig verstehe, hängt das nur mit der Länge zusammen.
Die Lösung ist ganz einfach.
Vor IF ... einfach eingeben:
laength kre_altkregr $3.;
format kre_altkregr $3.;
Damit geht SAS von einer Variablen Länge von 3 Zeichen aus und gibt dem ganzen das entsprechende Format.
Andere Lösung wäre, zuerst die längste Variablen-Inhalte zu vergeben, dann nimmt er das automatisch, also beim Beispiel:
IF 85<=KRE_ALTKRE THEN KRE_ALTKREGR='i18';
Macht er Automatisch Format und Länge auf 3.
Viele Grüße und schöne Pfingsten
Thomas
Danke
genau so wars, hat sas schon wieder mal schneller und mehr gedacht als ich ;)
Freut mich, dass es geholfen
Freut mich, dass es geholfen hat...
Viele Grüße und noch schöne Pfingsten
Thomas