2016-05-08 6 views

Antwort

2

Wenn Ihre variable Zeichenwert hat, dann ist es ein Zeichenwert, nicht numerisch. Sie müssen das auch beheben. Ich würde vorschlagen, die anyalpha() - Funktion zu verwenden, um festzustellen, ob Sie es in eine Zahl umwandeln können.

If anyalpha(old_var)=0 then new_var = input(old_var, best12.); 
-1

Sie können die Variable einfach mit 1 multiplizieren; Diese ersetzt alle numerischen als Zeichenwerte mit ihren numerischen Pendants gespeicherten Werte und füllt alle Zeichenwerte als fehlend:

data temp; 
    input var $; 
    datalines; 
    Hello 
    1 
    <3 
    3 
    Note1 
    5 
; 
run; 

data temp2; 
    set temp; 
    var2 = var * 1; 
run; 

Beachten Sie, dass dies eine Warnung geben kann, je nachdem wie viele Zeichenwerte ersetzt werden, aber diese Warnung nicht Probleme mit dem resultierenden Datensatz verursachen.

+0

Warum Code schreiben, der zu Warnungen führt, wenn es viele andere gültige Möglichkeiten gibt, ihn zu lösen? –

0

Sie können die Eingabefunktion verwenden, um von einem Zeichen in ein numerisches Zeichen zu konvertieren.

new_var = input(old_var, ?? best.); 

Durch die Versorgung des ?? Option unmittelbar vor dem informat, SAS weisen Sie alle Warnmeldungen zu unterdrücken, oder stellt fest, es würde normalerweise drucken, wenn es ein Problem begegnet die informat Anwendung.

Das Schöne an diesem Ansatz ist, dass es einfach ist und Ihnen die Absicht mitteilt, den Wert von String in numerisch zu konvertieren und dabei alle Typkonvertierungen zu ignorieren, denen Sie begegnen.

Verwandte Themen