重命名变量名称以SAS中的数字开头

时间:2013-10-21 16:07:11

标签: sas rdbms

我有一些来自SAS数据集中的关系数据库的结果。所有变量名都以数字开头,因此我无法重命名它们或在数据步骤中访问它们。有没有办法重命名它们或访问它们而不再从RDBMS中获取数据?

2 个答案:

答案 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(或其他)。