BookmarkSubscribeRSS Feed
gabon
Calcite | Level 5

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 Smiley Happy

5 REPLIES 5
Reeza
Super User

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;

gabon
Calcite | Level 5

Thank you very much!!! It worked Smiley Happy

Ksharp
Super User

if you encounter the limitation of Macro variable's Length , consider using CALL EXECUTE () .

SAS_inquisitive
Lapis Lazuli | Level 10

@Ksharp Would  you mind showing it using  CALL EXECUTE?

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 6726 views
  • 4 likes
  • 4 in conversation