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!!!
... View more