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: 9,676

Re: Converting variable names to variable values via an Array

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

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: 9,676

Re: Converting variable names to variable values via an Array

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

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.

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

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