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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.