Hey guys,
What I am trying to do are following: I want to find out if a observation (A) is top 3 across others.
For example,
A B C D E F G H TOP3-A
1 20 30 40 50 60 70 80 90 N
2 80 90 70 80 0 0 0 0 Y
3 70 0 0 80 90 0 0 0 Y
4 60 70 80 90 0 0 0 0 N
I am thinking transpose + rank + transpose + if <4 then Y else N, however it seems too cumbersome and to be honest as a newbie I do not how to code all these steps correctly...
Thanks!
Take the 3-rd largest value. Compare it with A and decide the top3_A flag.
data want;
set have;
top3_A = 'N';
array k
top = largest(3, of k
if A >= top then top3_A = 'Y';
drop top;
run;
Hello,
data have;
input A B C D E F G H ;
datalines;
1 20 30 40 50 60 70 80 90
2 80 90 70 80 0 0 0 0
3 70 0 0 80 90 0 0 0
4 60 70 80 90 0 0 0 0
;
data want;
set have;
TOP3_A="N";
do i=1 to 3;
if B=largest(i, B,C,D,E,F,G,H) then do;
TOP3_A="Y";
go to finish;
end;
end;
finish: ;
drop i;
run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.