我在更新代碼時遇到了一些麻煩,無法使用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的設置或選項?
謝謝。
我在更新代碼時遇到了一些麻煩,無法使用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的設置或選項?
謝謝。
爲什麼不使用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 ;
你忘記了什麼嗎? COMPRESS(name ||'= f'|| PUT(varnum,3。)也許)我將修改爲關於VALIDVARNAME選項更通用的CATX('= F',nliteral(name),varnum) –
Thanks!錯過了右括號。我還需要學習更頻繁地使用CAT功能。我同意如果OP沒有聲明名稱是自動分配的,NLITERAL將會有用。 – Ludwig61
該文檔對此變化有何評論? –
我找不到任何指示有變化的內容。我正在從個人電腦上的9.3版SAS轉向服務器上的9.4 SAS Studio,因此有幾個移動部件。它可能不是一個代碼問題。 –
我一直在找,但還沒有找到任何東西。在support.sas.com上使用筆記,例子等進行搜索,也許你會發現一些東西。如果您必須走這條路線並需要幫助發佈另一個問題,您「可以」很容易地編寫重命名代碼。 –