2013-02-03 89 views
-1

我有一個數據集,其中全是字符格式的數據。從另一個數據集創建數據集時使用信息

現在我想從這一個創建另一個數據集,把它放在一切正確的十進制或日期或字符格式。

這是我正在嘗試。

 
data work.testout; 

    attrib account_open_date informat = mmddyy10.; 


    do i = 1 to nobs; 
     set braw.accounts point = i nobs = nobs; 
     output; 




    end; 
    stop; 
run; 

這給了我: Variable 'account_open_date' from data set braw.accounts (at line 7 column 21) has a different type (character) to the variable type on the data vector (numeric)

什麼是這樣做的最佳方式?

+0

你爲什麼要編寫自己的datastep循環? DATASERVER是否沒有正常的SAS自動datastep循環? – Joe

回答

2

您不能使用信息將變量直接從字符轉換爲數字。至少在SAS中,不能將變量從字符轉換爲數字,句點,而不使用中介。你必須做一些事情大致如下的行:

data want; 
set have(rename=varwant=temp); 
varwant=input(temp,MMDDYY10.); 
drop temp; 
run; 

有你的(角色)可變重命名爲一個臨時名稱,然後將其轉換使用輸入到數字。

+0

如果我想要格式爲字符,我該怎麼做? 'varwant = input(temp,$ 10);' 給我:'錯誤:解析異常 - 中止 錯誤:DS-00274:無法解析基礎DataServer代碼:遇到「」(「」(「」at line 25,柱88 期待之一: 「;」 ... 「*」 ... 「**」 ... 「=」 ... 「<」 ... (和51更多)' – dwjohnston

+1

INPUT =接受數字或字符輸入並返回數字PUT =接受數字或字符輸入並返回字符 – Joe

+0

@ user1068446如果您顯示的是您準確嘗試的代碼,則會導致錯誤消息,因爲您失敗在規範格式中包含一個「點」,嘗試'varwant = input(temp, $ 10);'。並閱讀SAS概念;我認爲你正在將SAS格式和信息與數據類型混淆。而'INPUT'函數將創建字符或數字變量(取決於所使用的'informat'),而'PUT'函數總是創建字符變量。 – BellevueBob

相關問題