Converting variable names to variable values via an Array

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 16
Accepted Solution

Converting variable names to variable values via an Array

Hello All,

hoping someone can help with this little problem.  I have a dataset which looks something like this

age_1 age_2gender Mean
10015
01032
00123

created from a PROC MEANS command and I would like to convert it to a dataset like this

VarMean
age_115
age_232
gender23

I had though maybe an ARRAY approach would work, but can't quite figure out how to pass the variable name from the array into a new variable.  Perhaps someone could help?

Many thanks,  Chris


Accepted Solutions
Solution
‎11-07-2014 08:58 AM
Super User
Posts: 10,018

Re: Converting variable names to variable values via an Array

Posted in reply to cb23_york
data have;
input age_1     age_2     gender     Mean;
cards;
1     0     0     15
0     1     0     32
0     0     1     23
;
run;
data want;
 set have;
 length var $ 40;
 array x{*} age_1     age_2     gender;
 do i=1 to dim(x);
  if x{i} then var=vname(x{i});
 end;
 drop i;
 run;

Xia Keshan

View solution in original post


All Replies
Super Contributor
Posts: 275

Re: Converting variable names to variable values via an Array

Posted in reply to cb23_york

Use array:

data want(keep=var mean);

do i=1 by 1 until (last); 

     set have end=last;

     array temp age_1--gender;

      var=vname(temp(i));

      output;

end;

run;

Or transpose:

proc transpose data=have out=need(where=(col1=1)) name=var;

by mean notsorted;

run;

Solution
‎11-07-2014 08:58 AM
Super User
Posts: 10,018

Re: Converting variable names to variable values via an Array

Posted in reply to cb23_york
data have;
input age_1     age_2     gender     Mean;
cards;
1     0     0     15
0     1     0     32
0     0     1     23
;
run;
data want;
 set have;
 length var $ 40;
 array x{*} age_1     age_2     gender;
 do i=1 to dim(x);
  if x{i} then var=vname(x{i});
 end;
 drop i;
 run;

Xia Keshan

Occasional Contributor
Posts: 16

Re: Converting variable names to variable values via an Array

Posted in reply to cb23_york

many thanks slchen and Xia I'm very grateful you spent time to consider and answer the question.  It was the vname function that is key!

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 205 views
  • 3 likes
  • 3 in conversation