2014-04-07 86 views
0

我引進的具有getnames=no如何重命名通用sas變量?

proc import out=dstest 
datafile 

... 

run; 

的數據集,並得到了一堆F1-F5變量

現在我想重新命名他們


data dstest (rename=(F2=newName)); 
    set dstest ; 
    run; 

以下是錯誤

The variable F2 in the DROP, KEEP, or RENAME list has never been referenced


data dstest ; 
     set dstest(rename=(F2=newName)) ; 
     run; 

以下是錯誤

Variable F2 is not on file WORK.dstest. 

然而PROC打印工作正常

proc print data=tortdata (obs=10) ; 
var F2; 
run; 
+0

這可以幫助你http://www.ats.ucla.edu/stat/sas/code/renaming_variables_dynamically.htm –

回答

2

沒有什麼內在的錯誤你貼什麼,之多,因而代碼應該運行:

data blah; 
f1=1; 
f2=4; 
run; 

data blah(rename=(f1=a f2=b)); 
set blah; 
run; 

但是,如果您只是重命名變量,沒有理由執行數據步驟。 PROC DATASETS可以處理這個,而不需要通過整個數據集。如果數據集很小,這可能無關緊要,但如果數據量較大,這可能會節省大量時間。請注意,您不能運行上述內容,然後執行此操作,因爲如果不重新構造blah數據集,f1和f2將會消失。

proc datasets lib=work; 
modify blah; 
rename f1=a f2=b; 
quit; 
+0

謝謝。顯然它與我的數據步驟一致,正如你所說的那樣。我用'proc print'檢查了它。但是爲什麼當我雙擊「資源管理器」中的表格圖標時,我仍然可以看到「F1 F2 F3 ...所有這些名稱」? – Buras

+0

@ Buras您會看到變量_labels_,它們與變量名稱不同 - 它們可以是帶空格的文本等。 'attrib_all_ label ='';'可以在PROC DATASETS或數據步驟中運行,清除所有標籤(這意味着您可以看到變量名稱)。 – Joe

+0

謝謝。現在我明白了 – Buras