Hello,
I have a very large data set with many variables with different names and labels (more than 300 hundred of them), I also have a excel file with variable names and descriptions (which I want use as labels). I'm able to import these into new sas data set (let's call it label data set), so I have sas data set with variable names and their labels. How could I code a macro which would use this label data set to assign labels for variables in my large data set?
Thanks
Create a macro variable using proc sql that is of the form
Variable_Name1 = "Variable Label1"
Variable_Name2 = "Variable Label2"
Here's an example:
*Create label data set;
data label_data_set;
length name label $25.;
name="Sex"; label="Gender"; output;
name="height"; label="Height (in)"; output;
name="weight"; label="Weight (lbs)"; output;
run;
*Create sample dataset to apply label;
data class;
set sashelp.class;
run;
*Create macro variable that holds label statement;
proc sql noprint;
select catx("=", name, quote(trim(label)))
into :label_list separated by " "
from label_data_set;
quit;
*Display macro variable in log;
%put &label_list.;
*Apply labels without recreating dataset;
proc datasets library=work;
modify class;
label &label_list.;
run;quit;
*Print the dataset to display new labels;
proc print data=class label noobs;
run;
Thank you very much!!! It worked
if you encounter the limitation of Macro variable's Length , consider using CALL EXECUTE () .
@Ksharp Would you mind showing it using CALL EXECUTE?
OK. Here is my example . written by me,Matt and Arthur.T.
http://support.sas.com/resources/papers/proceedings15/2785-2015.pdf
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.