2014-04-07 85 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