BookmarkSubscribeRSS Feed
Siddharth123
Obsidian | Level 7

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

2 REPLIES 2
Siddharth123
Obsidian | Level 7

Hi All,

 

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

 

Kind regards

 

SK

RW9
Diamond | Level 26 RW9
Diamond | Level 26

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;

 

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1632 views
  • 0 likes
  • 2 in conversation