I want to convert all the variable types in the table from characters into numerical types.
and here is the sample.
/*The sample dataset TEST contains both character and numeric variables*/
data test;
input id $ b c $ d e $ f;
datalines;
AAA 50 11 1 222 22
BBB 35 12 2 250 25
CCC 75 13 3 990 99
;
run;
/*PROC CONTENTS is used to create an output dataset called VARS to list all*/
/*variable names and their type from the test dataset*/
PROC contents data=test out=vars(keep=name type) noprint;
data vars;
set vars;
if type=2 and name ne'id';
newname=trim(left(name))||"_n";
run;
options symbolgen;
proc sql noprint;
select trim(left(name)),trim(left(newname)),
trim(left(newname))||'='||trim(left(name))
into :c_list separated by '',:n_list separated by '',
:renam_list separated by ''
from vars;
quit;
data test2;
set test;
array ch(*) $ &c_list;
array nu(*) $ &n_list;
do i=1 to dim(ch);
nu(i)=input(ch(i),8.);
end;
drop i &c_list;
rename &renam_list;
run;
proc contents data=test2;
run;
But in the code line 'rename &renam_list',
when I run it in the 'log' session, I see the error below:
SYMBOLGEN: Macro variable C_LIST resolves to ce
SYMBOLGEN: Macro variable RENAM_LIST resolves to c_n=ce_n=e
109 rename &renam_list;
NOTE: Line generated by the macro variable "RENAM_LIST".
109 c_n=ce_n=e
_
22
ERROR 22-322: Expecting a name.
Could someone help me to solve this problem, what does 'Expecting a name' means in my situation?
Tks!!!