Say I have a data set with 4 character variables: x1-x4.
The data looks something like: ab cd ab ca.
I want to compare each variable to the other. Therefore, I have 6 combinations. I am interested in the ones that match (i.e., x1 matches x3, 'ab').
So my output should contain 3 columns:
First and second columns list the variables being compared to each other (total of 6 rows due to 6 combinations).
The third column stating whether or not there is a match.
I know to calculate the number of combinations, I use: c42=comb(4,2).
I am stuck thereafter. Any suggestions?
OK, I have added one more variable 'num' to identify the original obs no., take it out as you wish.
data have;
input (x1-x4) (:$);
cards;
aa ab aa bd
dd cc dd cc
;
data want (keep=first second match num) ;
set have;
array xx $ x1-x4;
do _i=1 to dim(xx);
do _j=_i+1 to dim(xx);
first=vname(xx(_i));
second=vname(xx(_j));
if xx(_i)=xx(_j) then match='Y';
else match='N';
Num=_n_;
output;
end;
end;
run;
proc print;run;
Regards,
Haikuo
Thank you very much! That helped a lot and it was very straightforward! I was able to tweak it and fit it to a more complicated data set.
Thanks again!
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 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.