2017-02-01 4 views
1

Ich habe ein Problem in sas. Ich habe ein Dataset, in dem die Zahlen als String gespeichert sind. Das Problem ist, dass die Größe und das Format der Zahlen sehr unterschiedlich sind. Ich will ein Beispiel geben:Konvertieren String für große und kleine Zahlen sas

data s; 
    x='123456789'; 
    y=input(x,best32.); 
    z = '0.0001246564'; 
    a = input(z,best32.); 
    put 'a='y; 
    put a; 
    keep y a; 
run; 

Ausgang:

y= 
1.2345679E14 
a= 
0.00012465644 

Wie Sie sehen, habe ich die Informationen in der großen ganzen Zahl verlieren. Wie kann ich mein Programm erstellen, um keine Informationen zu verlieren? Soweit ich verstehe, hat diese Nummer weniger als 15 Ziffern sas large number. Ich vermisse wirklich Python, wo ich einfach y = float (x) setzen kann.

Antwort

2

Es ist kein Informationsverlust aufgetreten. Sie verwechseln nur informat für format.

Die Informat best32. sagte SAS, um die Zeichenfolge mit einer Breite von 32 zu importieren. Alles gut, Sie haben alle 15 Zeichen in der Nummer gespeichert.

Nun, wenn Sie alle 15 Zeichen sehen möchten, müssen Sie ein Format breiter verwenden, als die Standard-best12. Format auf Ausgabe zu sehen:

data s; 
    x='123456789'; 
    y=input(x,best32.); 
    z = '0.0001246564'; 
    a = input(z,best32.); 
    put y= best32.; 
    put a= best32.; 
    keep y a; 
run; 

Aber auch wenn Sie es nicht auf diese Weise angezeigt werden , die Nummer y ist immer noch genau gleich 123456789, wenn Sie Mathe damit oder Ähnliches machen würden - Sie haben keine Informationen verloren, Sie haben es einfach nicht richtig angezeigt.

+0

Vielen Dank. Das beste12. ist Standard habe ich nicht gewusst :) – fossekall

Verwandte Themen