Hi everyone.
I'm wondering how can I generate the variable final given I have the dataset with variable id, flag and total more elegantly than what I've done(below)?
Thank you very much and happy Easter!
id flag total final
1 0 4 3
1 . 4 3
1 . 4 3
1 1 4 3
2 1 2 2
2 . 2 2
3 . 5 2
3 1 5 2
3 0 5 2
3 0 5 2
3 0 5 2
4 . 1 1
5 . 2 2
5 . 2 2
My code is:
data b;
set a;
by id;
retain total2 0;
if first.id then total2=total;
if flag=0 then total2=total2-1;
run;
proc sql;
select *, min(total2) as final
from b
group by id;
quit;
How about this:
proc sql;
select *,sum(flag ne 0) as final2
from a
group by id;
quit;
![]()
Good luck!
Anca.
PS: and if you want a table, then add the
proc sql;
create table your_table as
select *,sum(flag ne 0) as final2
from a
group by id;
quit;
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!
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.