@Moraes86 I do have an alternate solution.
data have;
infile cards dsd ;
input user $ Observation & $500.;
cards;
"370","sample type N1 indicated the presenceH3 of subtype H1 However,"
"367","sample type indicated the presence of subtype H1.H2 However,"
"368","sample type indicated the presence of subtype H1 However,H3"
"369","sample type indicated the presence of subtype H1 However,"
"3046","sample type this case and indicated the presence of multiple types, including H1, H3, N1, and N2. "
;
run;
data want1;
set have;
/*Creating a variable which will contain all Finding Words*/
FINDING_WORD="H1 H2 H3 N1 N2";
COUNT=COUNTW(FINDING_WORD);
DO I=1 TO COUNT;
if INDEX(OBSERVATION,SCAN(FINDING_WORD,I)) then Flag=SCAN(FINDING_WORD,I);
OUTPUT;
END;
DROP I FINDING_WORD COUNT;
run;
PROC SORT DATA=WANT1 NODUPKEY;BY _ALL_;RUN;
DATA WANT;
SET WANT1;
BY USER Observation;
RETAIN FINDING;
IF FIRST.USER THEN FINDING=FLAG;
ELSE FINDING=CATX(',',FINDING,FLAG);
IF LAST.USER;
DROP FLAG;
RUN;
... View more