🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Lapis Lazuli | Level 10

## 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?

1 ACCEPTED SOLUTION

Accepted Solutions
Ammonite | Level 13

## 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;

5 REPLIES 5
Rhodochrosite | Level 12

## 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          .

Obsidian | Level 7

## Re: next observation

Ammonite | Level 13

## 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;

Rhodochrosite | Level 12

## 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)?

Ammonite | Level 13

## 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;

Discussion stats
• 5 replies
• 4896 views
• 0 likes
• 4 in conversation