turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- SAS Programming
- /
- Base SAS Programming
- /
- Multiple Output Statements within a Single Data St...

Topic Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-14-2017 05:25 AM

Hi there, I have a question about multiple output statements within a data step:

```
data TWO;
input x y;
datalines;
5 2
3 1
5 6
;
RUN;
data ONE TWO OTHER;
set TWO;
if X eq 5 then output ONE;
if Y lt 5 then output TWO;
output;
run;
```

The code above seems fairly straightforward. However, when I'm looking at the ONE data set, the order of the observations seems to be a little strange:

From the first output statement, the first two observations should be:

5 2

5 6

From the last output statement, the last three observations should be:

5 2

3 1

5 6

I am expecting the combined data set to be:

5 2

5 6

5 2

3 1

5 6

However, the order of the output data set is:

5 | 2 |

5 | 2 |

3 | 1 |

5 | 6 |

5 | 6 |

The order of the data set is changed but it wasn't exactly sorted by X and Y.

Does anyone know how the data set is sorted when we have the two output statements in the data step?

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to kisumsam

11-14-2017 05:31 AM - edited 11-14-2017 05:32 AM

First the data step reads the observation 5 2. Then it checks if X eq 5, which is true, so it outputs to the data set ONE. next it checks if Y lt 5, which is false, so nothing is outputted. Next you simply have an output statement, which means that the 5 2 observations is outputted again(to all created data sets, including X). That is why the first two observations are 5 2.

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to kisumsam

11-14-2017 10:33 AM

kisumsam wrote:

Hi there, I have a question about multiple output statements within a data step:

`data TWO; input x y; datalines; 5 2 3 1 5 6 ; RUN; data ONE TWO OTHER; set TWO; if X eq 5 then output ONE; if Y lt 5 then output TWO; output; run;`

The code above seems fairly straightforward. However, when I'm looking at the ONE data set, the order of the observations seems to be a little strange:

I am expecting the combined data set to be:

5 2

5 65 2

3 1

5 6

Does anyone know how the data set is sorted when we have the two output statements in the data step?

To get that specific result one way would be:

data three; set TWO (where=(x ge 5)) two ; run;

which reads set two twice, the first bit says to keep only the records with x ge 5 and since that is the first input set they are output first,

then read set two again with all records.