Hello,
I did not end up using SAS for this match before. However, I used SAS for a different matching project in 2016. Here's some code for you (you can change what you want to fit your needs):
proc sql; create table audit5.temp as select a.listCount, a.obs, b.obs as obs2, count(*) as matchCount from audit5.grp1Talla as a, audit5.grp2Talla as b where a.value = b.value and a.listCount LE b.listCount and a.Effect = b.Effect group by 1,2,3 having listCount = matchCount; quit;
/* Finally, join the two */ proc sql; create table audit5.final as select a.*, b.obs2, c.cik as cik2, c.accounting as accounting2, c.fraud as fraud2, c.errors as errors2, c.otherissues as otherissues2, c.lnassets as lnassets2, c.roa as roa2, c.size as size2, c.mtb as mtb2, c.lev as lev2, c.fcf as fcf2, c.loss as loss2, c.foreign as foreign2, c.segments as segments2, c.comnam as comnan2, c.abnbhar as abnbhar2, c.big4 as big42, c.cityex as cityex2, c.natex as natex2, c.ic as ic2, c.auditorofficesize as auditorofficesize2, c.clientimportance as clientimportance2, c.longtenure as longtenure2, c.ye as ye2, c.big_r as big_r2, c.multiplerestatements as multiplerestatements2, c.sic as sic2, c.fyear as fyear2 from audit5.grp1 a, audit5.temp b, audit5.grp2 c where a.obs=b.obs and c.obs=b.obs2; quit;
data audit5.final2; set audit5.final; if lnassets=. then delete; if lnassets2=. then delete; distance=lnassets2-lnassets; run;
proc sort data=audit5.final2; by obs distance; run;
data audit5.final3; set audit5.final2; by obs distance; if first.obs; run;
data audit5.bigr audit5.littler; set audit5.final3; if big_r=1 then output audit5.bigr; if big_r=1 then output audit5.littler; run;
data audit5.bigr1; set audit5.bigr; keep cik fyear sic size mtb lev fcf roa loss foreign segments comnam abnbhar big4 cityex natex ic auditorofficesize clientimportance longtenure ye effect accounting fraud errors otherissues big_r multiplerestatements; run;
data audit5.littler1; set audit5.littler; keep cik2 fyear2 sic2 size2 mtb2 lev2 fcf2 roa2 loss2 foreign2 segments2 comnan2 abnbhar2 big42 cityex2 natex2 ic2 auditorofficesize2 clientimportance2 longtenure2 ye2 effect accounting2 fraud2 errors2 otherissues2 big_r2 multiplerestatements2; run;
data audit5.littler2; set audit5.littler1; rename cik2=cik; rename sic2=sic; rename size2=size; rename mtb2=mtb; rename lev2=lev; rename fcf2=fcf; rename roa2=roa; rename loss2=loss; rename foreign2=foreign; rename segments2=segments; rename comnan2=comnam; rename abnbhar2=abnbhar; rename big42=big4; rename cityex2=cityex; rename natex2=natex; rename ic2=ic; rename auditorofficesize2=auditorofficesize; rename clientimportance2=clientimportance; rename longtenure2=longtenure; rename ye2=ye; rename big_r2=big_r; rename multiplerestatements2=multiplerestatements; rename fyear2=fyear; run;
proc sort data=audit5.bigr1 out=audit5.bigr2; by cik fyear; run;
proc sort data=audit5.littler2 out=audit5.littler3; by cik fyear; run;
data audit5.combinedfinal; set audit5.bigr2 audit5.littler3; run;
data audit5.combinedfinal1; set audit5.combinedfinal; if Big_R=1 then Little_R=0; else Little_R=1; run;
proc means data=audit5.combinedfinal1; run;
proc logistic data= audit5.combinedfinal1 descending; class fyear SIC; class Loss / param=ref; class Foreign / param=ref; class Big4 / param=ref; class CityEx / param=ref; class NatEx / param=ref; class IC / param=ref; class LongTenure / param=ref; class YE / param=ref; class Little_R / param=ref; class MultipleRestatements / param=ref; model Little_R = LongTenure ClientImportance AuditorOfficeSize CityEx NatEx Size MTB Lev FCF Loss ROA Segments Abnbhar Big4 IC Foreign YE MultipleRestatements fyear SIC /link=probit RSQ; output out= audit5.combinedfinal2 p=Probability; run;
Best regards,
Jadallah
... View more