I'm trying to calculate the change in mean from baseline to each visit (vist1 to vist2; vist1 to visti3; visit1 to visit4...)
I tried this using lag, but results don't seem correct. It is just using the lag between observations rather than holding visit 1 as the LAG. Help is appreciated
Starting:
visit | mean |
1 | 2.41 |
2 | 2.47 |
3 | 2.53 |
4 | 2.54 |
want something like this:
visit | mean | change |
1 | 2.41 | . |
2 | 2.47 | 2.44 |
3 | 2.53 | 2.47 |
4 | 2.54 | 2.48 |
I started with this code:
data want;
set have;
lag_mean=lag(mean);
change=mean-lag_mean;
run;
data have;
input visit mean;
cards;
1 2.41
2 2.47
3 2.53
4 2.54
;
run;
data want;
set have;
sum+mean;
change=sum/_n_;
if _n_=1 then change=.;
drop sum;
run;
Try an approach using RETAIN instead.
data have;
input visit mean;
cards;
1 2.41
2 2.47
3 2.53
4 2.54
;
run;
data want;
set have;
sum+mean;
change=sum/_n_;
if _n_=1 then change=.;
drop sum;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.