How to add response option labels in SAS data set from an excel file

Viewed 22

I have a SAS data set which just has the variable names for each variable: enter image description here

Separately, I have two CSV files - one that contains the variable label (file is in 'long format'): enter image description here

and one that contains the response option labels (also in 'long format'): enter image description here

I would like to apply the variable labels and response option labels to my SAS data set. I imagine uploading my CSV files to SAS, to make data sets, but then after that, I am not sure how to proceed. It seems that Proc datasets may be an option, but I have not been able to find an example that I could figure out to apply to my scenario. Any help - as always - is much appreciated.

Best, Camilla

1 Answers

See if you can use this as a template. I can only see educatio in your response option labels, but do the same format trick for the variables of interest.

Feel free to ask.

/* Sample data */
data have;
input gender s_5 p_gender s_6 p_age rellengt educatio;
infile datalines dlm = ',';
datalines;
1, , 1, , 66, 25, 4 
0, , 1, , 78, 46, 6 
1, , 0, , 72, 50, 4 
;

data val_labels;
input var $ 1-8 label $ 10 - 74;
infile datalines missover;
datalines; 
gender   Hvad er dit køn:                                                
s_5      Hvad er dit køn: - Andet                                        
p_gender Er du i et fast parforhold med en mand eller en kvinde?         
s_6      Er du i et fast parforhold med en mand eller en kvinde? - Andet 
p_age    Hvad er din partners alder (i år)?                              
rellengt Hvor længe har du og din partner været sammen?                  
educatio Hvad er dit højest fuldførte uddannelsesniveau?                 
;

data res_labels;
input var $ 1-8 value 10 label $ 12 - 63;
infile datalines missover;
datalines; 
educatio 1 Grundskode til og med 6. klasse                   
educatio 2 Grundskole 7-10. klasse / forberedende uddannelse 
educatio 3 Gymnasiel uddannelse                              
educatio 4 Erhvervsfaglig uddannelse                         
educatio 5 Kort videregående uddannelse                      
educatio 6 Mellemlang videregående uddannelse                
educatio 7 Lang videregående uddannelse                      
educatio 8 Ph.D / Forskeruddannelse                          
;

/* Variable Labels */
proc sql noprint;
   select compbl(cats(var, '=', quote(label)))
   into :label separeted by ' '
   from val_labels
   ;
quit;

proc datasets lib = work nolist;
   modify have;
      label &label.;
quit;

proc contents data = have;
run;

/* response format */
data fmt;
   set res_labels(rename=(value=start label=label)) end=eof;
   retain fmtname "edufmt" type "n";
   output;
   if eof then do;
      start=""; Label="";
      HLO="O"; output;
   end;
run;

proc format library = work cntlin = fmt;
run;

data want;
   set have;
   format educatio edufmt.;
run;

proc print data = want;
run;
Related