I have a dataset:
subjid include wk qtotal mnchg
1 1 1 6 .
1 1 8 7 4
1 1 12 5 2
1 1 16 5 3
2 1 8 1 4
2 1 12 6 1
2 1 16 4 2
3 1 1 4 1
3 1 8 4 5
I would like the create the same dataset with a new variable, which is the mchg divided by the qtotal of wk 1 multiplied by 100. So for each subject the mnchg would be divided by the qtotal that the received at wk 1 (e.g., ./6, 4/6, 2/6, 3/6 ---each times by 100 for subjid 1)...see below for variable output:
subjid include wk qtotal mnchg perchg
1 1 1 6 . .
1 1 8 7 4 4/6*100
1 1 12 5 2 2/6*100
1 1 16 5 3 3/6*100
2 1 8 1 4 .
2 1 12 6 1 .
2 1 16 4 2 .
3 1 1 4 . .
3 1 8 4 5 5/4*100
is it ok to assume wk=1 would only occur in the 1st record of each subjid?
data have;
input subjid include wk qtotal mnchg ;
cards;
1 1 1 6 .
1 1 8 7 4
1 1 12 5 2
1 1 16 5 3
2 1 8 1 4
2 1 12 6 1
2 1 16 4 2
3 1 1 4 1
3 1 8 4 5
;
data want;
set have;
by subjid;
retain q;
if first.subjid then call missing(q);
if first.subjid and wk=1 then q=qtotal;
else perchg=mnchg/q*100;
run;
is it ok to assume wk=1 would only occur in the 1st record of each subjid?
data have;
input subjid include wk qtotal mnchg ;
cards;
1 1 1 6 .
1 1 8 7 4
1 1 12 5 2
1 1 16 5 3
2 1 8 1 4
2 1 12 6 1
2 1 16 4 2
3 1 1 4 1
3 1 8 4 5
;
data want;
set have;
by subjid;
retain q;
if first.subjid then call missing(q);
if first.subjid and wk=1 then q=qtotal;
else perchg=mnchg/q*100;
run;
thanks! Worked perfectly!!
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.