У меня есть набор данных 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... для переименования моей переменной я хочу использовать имя в наборе данныхName
в качестве новых имен. Набор данных Name
выглядит следующим образом (я могу транспонировать его, если им будет проще пользоваться). Порядок Name
такой же, как последовательность переменных в наборе данных lib.test
. Как я могу изменить приведенный выше код, чтобы добиться этого?
Name
name1
anc
sjsjd
mdmd