it-swarm.com.de

so extrahieren Sie die letzten 4 Zeichen der Zeichenfolge in SAS

verbesserte Formatierung, ich bin ein bisschen hängen geblieben, wo ich die letzten 4 Zeichen der Zeichenfolge nicht extrahieren kann. Wenn ich schreibe: -

indikan=substr(Indikation,length(Indikation)-3,4);

Es gibt ein ungültiges Argument.
Wie macht man das?

5
user3658367

Dieser Code funktioniert:

data temp;
indikation = "Idontknow";
run;

data temp;
set temp;
indikan = substrn(indikation,max(1,length(indikation)-3),4);
run;

Können Sie mehr Kontext für die Variable angeben? Wenn die Indikation eine Länge von 3 oder weniger hat, als ich diese Fehlermeldung sehen konnte, oder wenn sie numerisch war, kann dies zu Problemen führen, da die Zahlen richtig sind ( http://support.sas.com/documentation/cdl/de/lrdict/64316) /HTML/default/viewer.htm#a000245907.htm ).

5
JJFord3

Wenn es in einigen Fällen wahrscheinlich weniger als vier Zeichen gibt, würde ich empfehlen, max hinzuzufügen:

indikan = substrn(indikation,max(1,length(indikation)-3),4);

Ich habe auch substrn hinzugefügt, wie Rob vorschlägt, da es besser ist, eine nicht lang genug Zeichenkette zu behandeln.

2
Joe

Oder man könnte die umgekehrte Funktion zweimal verwenden:

data _null_;

   my_string = "Fri Apr 22 13:52:55 +0000 2016";

   _day   = substr(my_string, 9, 2);
   _month = lowcase(substr(my_string, 5, 3));

   * Check the _year out;
   _year  = reverse(substr(reverse(trim(my_string)), 1, 4));

   created_at = input(compress(_day || _month || _year), date9.);

   put my_string=;
   put created_at=weekdatx29.;
run;
1
Rio Pugliese

Falsche Ergebnisse können durch nachgestellte Leerzeichen verursacht werden.

indikan=substr(strip(Indikation),length(strip(Indikation))-3);

muss dir die letzten 4 Zeichen geben

0
Gabit Kemelov

Oder Sie können diesen Ansatz ausprobieren, der anfangs etwas weniger intuitiv ist, stabil, kürzer ist, weniger Funktionen verwendet und mit numerischen und Textwerten arbeitet:

indikan = prxchange("s/.*(.{4}$)/$1/",1,indikation);
0
Willwillpower