## next observation

Solved
Frequent Contributor
Posts: 126

# next observation

Hello,

I know that when we want the previous observation, we use (lag) function

What can I use when I want next observation?

Accepted Solutions
Solution
‎09-12-2014 05:48 PM
Posts: 1,270

## Re: next observation

Hi,

data have;
input Obs    Height;
datalines;
1     69.0
2     56.5
3     65.3
4     62.8
5     63.5
;

Proc sql;
Select have.*, next.*
from have left join have as next
on have.obs + 1 = next.obs;
Quit;

All Replies
Valued Guide
Posts: 765

## Re: next observation

here's one idea ...

data new;

merge sashelp.class (keep=height) sashelp.class (firstobs=2 keep=height rename=(height=nextheight));

run;

Obs    Height    nextheight

1     69.0        56.5

2     56.5        65.3

3     65.3        62.8

4     62.8        63.5

5     63.5        57.3

6     57.3        59.8

7     59.8        62.5

8     62.5        62.5

9     62.5        59.0

10     59.0        51.3

11     51.3        64.3

12     64.3        56.3

13     56.3        66.5

14     66.5        72.0

15     72.0        64.8

16     64.8        67.0

17     67.0        57.5

18     57.5        66.5

19     66.5          .

Regular Contributor
Posts: 233

Posts: 1,270

## Re: next observation

data have;
input a;
datalines;
1
2
3
4
5
;

Proc sql;
Select have.a, next.a as next_obs
from have left join have as next
on have.a + 1 = next.a;
Quit;

Valued Guide
Posts: 765

## Re: next observation

Hi ... have you tried your solution with some data other than 1 2 3 4 5 (anything that is not just a bunch of consecutive values)?

Solution
‎09-12-2014 05:48 PM
Posts: 1,270

## Re: next observation

Hi,

data have;
input Obs    Height;
datalines;
1     69.0
2     56.5
3     65.3
4     62.8
5     63.5
;

Proc sql;
Select have.*, next.*
from have left join have as next
on have.obs + 1 = next.obs;
Quit;

🔒 This topic is solved and locked.