2016-02-05 196 views
1

我在更新代碼時遇到了一些麻煩,無法使用SAS 9.4,Proc Import進行特別處理。我有一堆亂七八糟的數據,我指定了「getnames = no」。在9.3中,默認的列名是F1,F2,F3等。然後我有一堆代碼來清理數據,重命名變量等。SAS 9.4 proc導入列名與getnames =否

在9.4中,默認的列名是A,B, C等等,所以我的舊代碼都不起作用。是否有可以更改爲F1,F2,F3命名約定而不是A,B,C的設置或選項?

謝謝。

+0

該文檔對此變化有何評論? –

+0

我找不到任何指示有變化的內容。我正在從個人電腦上的9.3版SAS轉向服務器上的9.4 SAS Studio,因此有幾個移動部件。它可能不是一個代碼問題。 –

+0

我一直在找,但還沒有找到任何東西。在support.sas.com上使用筆記,例子等進行搜索,也許你會發現一些東西。如果您必須走這條路線並需要幫助發佈另一個問題,您「可以」很容易地編寫重命名代碼。 –

回答

0

爲什麼不使用PROC DATASETS來重命名所有變量?您可以使用PROC CONTENTS和PROC SQL來創建RENAME語句。

PROC CONTENTS DATA=imported OUT=impcont NOPRINT ; 
RUN ; 

PROC SQL ; 

    SELECT COMPRESS(name || '=f' || PUT(varnum,3.)) 
    INTO :renamestmt SEPARATED BY ' ' 
    FROM impcont 
    ; 

QUIT ; 

PROC DATASETS LIBRARY=work NOLIST ; 
    MODIFY imported ; 
    RENAME &renamestmt ; 
    RUN ; 
QUIT ; 
+0

你忘記了什麼嗎? COMPRESS(name ||'= f'|| PUT(varnum,3。)也許)我將修改爲關於VALIDVARNAME選項更通用的CATX('= F',nliteral(name),varnum) –

+0

Thanks!錯過了右括號。我還需要學習更頻繁地使用CAT功能。我同意如果OP沒有聲明名稱是自動分配的,NLITERAL將會有用。 – Ludwig61