【发布时间】:2016-04-13 11:14:55
【问题描述】:
我有一个 SAS 数据集 DATA,其中包含 100 个变量。不幸的是,这个数据集不包含每个变量的名称。它只是将变量命名为VAR1 - Var100。我有一个单独的文件,其中列出了每个变量的名称Name(每个单元格一个名称)。我不想一一重命名,所以下面的代码不是一个选项。
data lib.test (rename = (var1= truename1 var2 = truename2 ...) ;
set lib.test;
run;
按照瑞兹的建议,我尝试实施以下解决方案http://stackoverflow.com/questions/29006915/rename-variable-regardless-of-its-name-in-sas。
proc sql;
/* Write the individual rename assignments */
select strip(name) || " = " || substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", varnum , 1)
/* Store them in a macro variable and separate them by spaces */
into :vars separated by " "
/* Use a sas dictionary table to find metadata about the dataset */
from sashelp.vcolumn
where libname = "LIB"
and memname = "TEST"
and 1 <= varnum <= 100;
quit;
proc datasets lib=lib nolist nodetails;
modify test;
rename &vars.;
quit;
现在,我不想使用 a,b,c,d ... 重命名我的变量,而是使用 datasetName 上的名称作为新名称。数据集Name 如下所示(如果更容易使用,我可以转置它)。 Name的顺序与数据集lib.test中的变量序列相同。如何更改上面的代码来实现这一点?
Name
name1
anc
sjsjd
mdmd
【问题讨论】:
-
创建一个包含 old-name 和 new-name 列的数据集,并使用它来生成重命名语句名称对。