## How can I convert a table with one row to a table with multiple rows?

Solved
Occasional Contributor
Posts: 7

# How can I convert a table with one row to a table with multiple rows?

Can I convert the data in a table with one row to a table with multiple rows? What are their coding?

Original table:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Table that I want:

1    2   3   4

5    6   7   8

9   10 11 12

13 14 15 16

Accepted Solutions
Solution
‎04-13-2017 01:06 PM
Super User
Posts: 24,012

## Re: How can I convert a table with one row to a table with multiple rows?

[ Edited ]

In this case an Array is probably your best bet, with an explicit OUTPUT statement. Here's a quick example with two loops.

``````data want;
set have;

array vals(*) val1-val16;
array new(*) new1-new4;

do i=1 to 4;

do j=1 to 4;
new(j) = vals(j*i);
end;

output;

end;
run;

``````

Jonathanzz wrote:

Can I convert the data in a table with one row to a table with multiple rows? What are their coding?

Original table:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Table that I want:

1    2   3   4

5    6   7   8

9   10 11 12

13 14 15 16

All Replies
Super User
Posts: 8,217

## Re: How can I convert a table with one row to a table with multiple rows?

```data have;
input var1-var4 @@;
cards;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
;
```

Art, CEO, AnalystFinder.com

Solution
‎04-13-2017 01:06 PM
Super User
Posts: 24,012

## Re: How can I convert a table with one row to a table with multiple rows?

[ Edited ]

In this case an Array is probably your best bet, with an explicit OUTPUT statement. Here's a quick example with two loops.

``````data want;
set have;

array vals(*) val1-val16;
array new(*) new1-new4;

do i=1 to 4;

do j=1 to 4;
new(j) = vals(j*i);
end;

output;

end;
run;

``````

Jonathanzz wrote:

Can I convert the data in a table with one row to a table with multiple rows? What are their coding?

Original table:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Table that I want:

1    2   3   4

5    6   7   8

9   10 11 12

13 14 15 16

Occasional Contributor
Posts: 7

## Re: How can I convert a table with one row to a table with multiple rows?

Thanks a lot!
Super Contributor
Posts: 459

## Re: How can I convert a table with one row to a table with multiple rows?

I guess that one way for this approach would be:

``````data want (keep = new1-new4);
set have;
array vals(*) var1-var16;
array new(*) new1-new4;

do j = 1 to floor(dim(vals)/4);
do i = 1 to 4;
new(i) = vals((j-1)*4 + i);
end;
output;
end;
run;``````
Super User
Posts: 10,850

## Re: How can I convert a table with one row to a table with multiple rows?

It is very easy for IML code.

``````data have;
input var1-var4 @@;
cards;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
;

proc iml;
use have;
read all var _all_ into x;
close;

want=shape(x,0,4);

create want from want;
append from want;
close;
quit;``````
Occasional Contributor
Posts: 9

## Re: How can I convert a table with one row to a table with multiple rows?

[ Edited ]

I would probably

1. add a new observation with values like 1,2,3,4,1,2,3,4,1,2,3,4,....

2. use Proc Transpose

When your dataset is large, this can be super efficiant by avoiding loops.

☑ This topic is solved.

Discussion stats
• 6 replies
• 208 views
• 6 likes
• 6 in conversation