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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.