DATA Step, Macro, Functions and more

INDEXC

Reply
Contributor
Posts: 50

INDEXC

Hi All,

 

I am not getting expected results when using INDEXC (please see code below). I would expect all records in the dataset UnSure rather than in For_Sure -

 

DATA TEST;
INPUT Name $50.;
INFILE DATALINES;
DATALINES;
DREFT ESTATES LTD
POTTERSLANE LTD
;
RUN;


DATA For_Sure UnSure;
SET TEST;
IF indexc(Name, "GOVERNMENT") > 0
OR indexc(Name, "COLLEGE") > 0 then OUTPUT For_Sure;
ELSE  OUTPUT UnSure;
RUN;

 

Any help will be greatly appreciated.

 

Thank you

SK

Contributor
Posts: 50

Re: INDEXC

Hi All,

 

I figured out that I need to use INDEX rather than INDEXC to solve this problem.

 

Kind regards

 

SK

Super User
Super User
Posts: 7,395

Re: INDEXC

Yes, function indexc() searchs for one single character in the string, where index() searchs for the whole text.  You can compress your code somewhat, if <> is looking for a binary 1 or 0 result, so index() or findw() (which i show below) will return 0 if not present, so 0 result, and anything is positive and considered true (also, please dont code all in capitals, it makes reading it very hard):

data test;
  input name $50.;
datalines;
DREFT ESTATES LTD
POTTERSLANE LTD
;
run;

data for_sure unsure;
  set test;
  if findw(name,"GOVERNMENT") or findw(name,"COLLEGE") then output for_sure;
  else output unsure;
run;

 

Ask a Question
Discussion stats
  • 2 replies
  • 263 views
  • 0 likes
  • 2 in conversation