我有一些来自SAS数据集中的关系数据库的结果。所有变量名都以数字开头,因此我无法重命名它们或在数据步骤中访问它们。有没有办法重命名它们或访问它们而不再从RDBMS中获取数据?
答案 0 :(得分:1)
options validvarname=any;
将允许您访问它们,甚至可能使用数据集 - 您可以在"variable name"n
中包含“非法”变量名称(之后引用n)以生成{{1这相当于一个变量名(就像在Oracle中使用name literal
)。
如果您想让它们更易于使用,您可以执行类似
的操作"variable name"
您也可以尝试在连接到RDBMS之前设置proc sql;
select catx(' ','rename',name,'=',cats('_',name,';')) into :renamelist separated by ' '
from dictionary.columns
where libname='WORK' and memname='DATASETNAME'; *perhaps AND ANYDIGIT(substr(name,1,1)) as well;
quit;
proc datasets lib=work;
modify datasetname;
&renamelist;
quit;
,因为如果您设置了这种方式(当前没有),SAS可能会为您执行此操作(具体取决于具体情况)。 / p>
答案 1 :(得分:0)
Joe给出的答案有一些有用的信息,但我实际上发现SAS有一种(有点自动)方法来处理这个问题。当您从RDBMS查询数据时,SAS实际上会替换任何以第一个字符带下划线的数字开头的列名。所以1994Q4成为_994Q4。因此,您可以通过这种方式简单地访问数据。
但是,SAS会将RDBMS中的原始名称保留为变量标题,因此它将在表格视图模式下显示为1994Q4(或其他)。