Here is an exemple : data gafi_countries; input gafi $20.; cards; bolivie chypre cyprus équateur equateur éthiopie ethiopie indo kenya nigeria nigéria pakistan sao lanka tanzanie thai tailand turquie viet yemen yémen ;run; data sanction_countries; input sanction $20.; cards; bélarus belarus chine congo rpdc rdc coree corée ivoire cuba érythrée erythree iran iraq irak liban lebanon liberia libéria libye lybie lybia myanmar birmanie sierra somalie somalia soudan sudan syrie zimbabwe ;run; data mytest; input objet $20.; cards; belarus acc belarus refus somalia acc somalia refus bolivie acc bolivie refus chypre acc chypre refus john bob ; data want; if _n_=1 then do; if 0 then set bkm.gafi_countries bkm.sanction_countries; declare hash g(dataset:'bkm.gafi_countries'); g.definekey('gafi'); g.definedone(); declare hiter hig('g'); declare hash s(dataset:'bkm.sanction_countries'); s.definekey('sanction'); s.definedone(); declare hiter his('s'); end; set mytest end=last; _temp=sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus); do rc=hig.first() by 0 while (rc=0); if find(objet, gafi, 'i') and find(objet, 'acc','i') then count_gafi_acc+1; if find(objet, gafi, 'i') and find(objet, 'refus','i') then count_gafi_refus+1; rc=hig.next(); end; do rc=his.first() by 0 while (rc=0); if find(objet, sanction, 'i') and find(objet, 'acc','i') then count_sanction_acc+1; if find(objet, sanction, 'i') and find(objet, 'refus','i') then count_sanction_refus+1; rc=his.next(); end; if _temp >= sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus) then count_person+1; if last then output; keep count_gafi_acc count_gafi_refus count_sanction_acc count_sanction_refus count_person; run; This gives count_person = 10 all other variables = 0 and should give count_gafi acc = 2 count_gafi_refus = 2 count_sanction_acc = 2 count_sanction_refus = 2 count_person = 2 Thank you very much for your help and time with this
... View more