I have a SAS data set which just has the variable names for each variable:
Separately, I have two CSV files - one that contains the variable label (file is in 'long format'):
and one that contains the response option labels (also in 'long format'):
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
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;