Dear experts,
assuming the following data set "have":
data have0;
country="BU"; output;
country="JP"; output;
country="US"; output;
run;
data have1;
value_list="US_ UK _JP NW"; output;
value_list="US_ UK _JP NW"; output;
value_list="US_ UK _JP NW"; output;
run;
data have; merge have0 have1 ;run;
I would like to obtain the following one:
data want
country="BU"; output;
run;
which is the most short, understandable and elegant way?
Please try this.
data want(keep=country);
set have;
if not find(strip(value_list),strip(country));
run;
Please try this.
data want(keep=country);
set have;
if not find(strip(value_list),strip(country));
run;
HAVE
data have0;
country="BU"; output;
country="JP"; output;
country="US"; output;
run;
/*
Up to 40 obs WORK.HAVE0 total obs=3
Obs COUNTRY
1 BU
2 JP
3 US
*/
data have1;
value_list="US_ UK _JP NW"; output;
value_list="US_ UK _JP NW"; output;
value_list="US_ UK _JP NW"; output;
run;
/*
Up to 40 obs WORK.HAVE1 total obs=3
Obs VALUE_LIST
1 US_ UK _JP NW
2 US_ UK _JP NW
3 US_ UK _JP NW
*/
WANT
Up to 40 obs WORK.WANT total obs=1
Obs COUNTRY
1 BU
SOLUTION
* if the list does not change;
data mrg;
merge have0 have1;
if index(valuelist,country)=0 then output;
run;quit;
Up to 40 obs WORK.MRG total obs=1
Obs COUNTRY VALUELIST
1 BU US UK JP NW
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.