2016-05-08 35 views

回答

2

如果你的變量有字符值那麼它是一個字符值,而不是數字。你也需要解決這個問題。我會建議使用anyalpha()函數來確定您是否可以將其轉換爲數字。

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

您可以簡單地將變量乘以1;這種替換存儲爲他們的數字對應的字符值所有數值和填充所有字符值丟失:

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

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

注意,這可能取決於有多少字符值被替換給予警告,但是這個警告不導致產生的數據集出現問題。

+0

爲什麼在有很多其他有效的解決方法時,編寫會導致警告的代碼? –

0

您可以使用輸入功能將字符轉換爲數字。

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

通過立即在了信息之前提供的??選項,則指示SAS壓制任何警告消息或筆記,當它遇到應用了信息的問題,它通常會打印。

這種方法的好處在於它很簡單,它傳達了將字符串的值轉換爲數字的意圖,同時忽略了遇到的任何類型轉換。