As @Reeza suggested provide sample data sets that clearly describe information contained for a proper solution. Based on information provided seems like you are looking for something like this:
data A; input Namecountry $20.; datalines; abcCanada defUS ghqCanada ;
data B; input Rank name $ score avg_score; datalines; 1 abc 23 20 2 def 21 23 ;
proc sql; create table want as select b.*,substr(Namecountry,length(name)+1) as Country from B left join A on substr(Namecountry,1,length(name))=name; quit;
... View more