2011-05-13 153 views
2

嗨我正在構建數據集,但我正在合併的數據格式不同。將數字轉換爲字符20

從Excel表單我導入其中數字8,另2個數據集即時通訊合併到是字符20,所以想要更改數字8爲char 20.

如何更改可變ACCTNUM ,以字符20? (我也想保持這種正如它的名字,因爲我相信一個新的變量將被創建)

data WORK.T82APR;  
set WORK.T82APR; 
rename F1 = acctnum f2 = tariff; 
run; 

proc contents data=T82APR; 
run; 

回答

2

試試這個:

data WORK.T82APR ;  
set WORK.T82APR; 
acctnum = put(F1, $20.); 
rename f2 = tariff; 
run; 

好吧,我沒注意你自己的重命名聲明,所以我調整了我的答案以反映現在。

+0

對不起,不回答越快,我已經離開。我設法從數字轉換爲字符,如下所示:data WORK.T82APR;設置WORK.T82APR; acctnum1 =輸入(acctnum,$ 20。);關稅1 =投入(關稅,2美元);降低acctnum關稅;重命名acctnum1 = acctnum關稅1 =關稅;跑;但是,數字的格式不正確,它看起來像這個3.0184403E13,而不是它的意思是14位數字。任何線索? – 2011-05-19 09:16:52

+0

我已經完成了現在。我將xls保存爲csv,並將導入的變量標識爲char $ 20。爲什麼我不這樣做呢?! – 2011-05-19 10:30:09

+0

很好看,它現在適合你。也許張貼你自己的答案,包括你的工作方式,以供將來參考的人尋找相同的解決方案... – Yoh 2011-05-19 12:01:20

3

雖然此線程已經死亡,但我想我會介入並回答爲什麼14位數轉換成爲E表示法。

通常,或更確切地說,除非另有說明,SAS中的數字格式使用BEST12格式。因此,如果數字值長於12個字符(包括任何逗號和句點),BEST12會選擇E表示法作爲格式化值的最佳方式。

輸入函數在這種情況下會接收格式化的值put(acctnum,BEST12。)。將會有2種方法。

要麼使用

input(put(acctnum, 14.), $20.); 

或者更改使用格式語句(直接在數據步或PROC數據集等)變量的格式 - 這具有額外的好處,如果你打開表SAS,你會看到14位數字而不是科學格式的值。

proc datasets library=work nolist; 
    modify dsname; 
     format acctnum 14.; 
run; 

文森特