Ich manipuliere einige String-Variablen und bestimmte Zellen geben unerwartete Werte mit Teilstring- und Längenfunktionen zurück. Diese Zellen enthalten zeichenformatierte Daten, da ich aufgrund der Art der Excel-Datei, aus der sie stammen, einige Änderungen vornehmen muss, bevor ich sie in SAS-Daten umwandeln kann. Hier ein Beispiel:SAS 9.4 Zeichenfunktionen - Warum kann eine Zelle unerwartete Ergebnisse liefern?
HABEN:
Obs _orig
1 4/3
2 12/16
3 1/13
4 6/2
5 3/10
6 5/4
7 10/14
soll:
Obs _orig _length _sub_1_2
1 4/3 3 4/
2 12/16 5 12
3 1/13 4 1/
4 6/2 3 6/
5 3/10 4 3/
6 5/4 3 5/
7 10/14 5 10
ich diesen Code verwende:
data want;
set have;
_strip=strip(_orig);
_sub_1_2=substr(_strip,1,2);
_length=length(_strip);
run;
Dies ist, was ich bekomme. Die Diskrepanzen sind fett gedruckt.
Obs _orig _length _sub_1_2
1 4/3 5
2 12/16 5 12
3 1/13 4 1/
4 6/2 3 6/
5 3/10 4 3/
6 5/4 5
7 10/14 5 10
beide sind Fälle, in denen SAS berechnet Länge = 5, wenn Länge sollte = 3. In beiden Fällen ist der Wert für die Teilzeichen abgeleitete Variable ist blank insgesamt. Die Ergebnisse sind die gleichen, wenn ich compress(), trim() oder trimn() in meinem Code anstelle von strip() verwende. Danke für jede Hilfe, die Sie zur Verfügung stellen können
Perfekt! Das nicht druckbare Zeichen war ein Zeilenumbruch in der Zelle, der vom Besitzer/Benutzer hinzugefügt wurde. Um die von Ihnen zur Verfügung gestellte Komprimierungsfunktion auszuführen, habe ich ein zusätzliches Komma hinzugefügt: _strip = compress (orig ,, 'kw'); Danke nochmal. – LRS
Froh, es hat funktioniert. Guter Haken an den zwei Kommas. Die Antwort wurde aktualisiert. – Quentin