Converting variable names to variable values via an Array

Solved
Occasional Contributor
Posts: 16

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_2 gender Mean 1 0 0 15 0 1 0 32 0 0 1 23

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

 Var Mean age_1 15 age_2 32 gender 23

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,787

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

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: 10,787

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