## Modify Table

Solved
Occasional Contributor
Posts: 9

# Modify Table

Hello everyone,

This is an example of my problem I have this dataset:

john 1 2 3

alex 2 5 6

tito 1 2 6

And I want this:

john 1

john 2

john 3

alex 2

alex 5

alex 6

tito 1

tito 2

tito 6

If you have any idea ( of course I have 100 hundred columns this is just an example).

Thanks a lot.

Accepted Solutions
Solution
‎04-04-2016 02:46 PM
Posts: 1,256

## Re: Modify Table

Hello Alexandra,

Try this:

`data have;input name \$ x y z;cards;john 1 2 3alex 2 5 6tito 1 2 6;data want;set have;array oldvar x--z;do _i=1 to dim(oldvar);  value=oldvar[_i];  output;end;keep name value;run;`

If your variables x, y, z (etc.) are character variables, please define the length of new variable VALUE appropriately using a LENGTH statement. If some are numeric and others are character and you want to have all values in a single character variable VALUE, you have to create two arrays (one for the numeric, one for the character variables) and convert the numeric values to character values by means of the PUT function in the assignment statement (value=...) of one of (then) two DO loops.

All Replies
Super User
Posts: 23,771

## Re: Modify Table

Try Proc Transpose or a data step using arrays.

If you need examples google 'ucla wide to long' or search on here.
Super User
Posts: 9,599

## Re: Modify Table

```data have;
a="john"; v1=1; v2=2; v3=3;
run;
proc transpose data=have out=want;
by a;
var v:;
run;```
Solution
‎04-04-2016 02:46 PM
Posts: 1,256

## Re: Modify Table

Hello Alexandra,

Try this:

`data have;input name \$ x y z;cards;john 1 2 3alex 2 5 6tito 1 2 6;data want;set have;array oldvar x--z;do _i=1 to dim(oldvar);  value=oldvar[_i];  output;end;keep name value;run;`

If your variables x, y, z (etc.) are character variables, please define the length of new variable VALUE appropriately using a LENGTH statement. If some are numeric and others are character and you want to have all values in a single character variable VALUE, you have to create two arrays (one for the numeric, one for the character variables) and convert the numeric values to character values by means of the PUT function in the assignment statement (value=...) of one of (then) two DO loops.

Occasional Contributor
Posts: 9

## Re: Modify Table

Thanks a lot
Occasional Contributor
Posts: 9