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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.