Help using Base SAS procedures

Reg:Index Function

Reply
Regular Contributor
Posts: 229

Reg:Index Function

data a;

input id$ 1-10;

b=index(id,'!');

c=countc(id,'!');

cards;

1!2!3445!!

run;

Hi i want the position of the Exclamation mark '!' i have tryed the index function but it will give the first occurence but i want the second ,third and fourth

occerance also how can i do by countc i founded the count of  Exclamation mark '!' but i want the postions for 2nd to 4th  Exclamation mark '!'..

PROC Star
Posts: 7,362

Reg:Index Function

You can always use findc and, after finding the first position, use that value+1 as the starting point for a subsequent search.

PROC Star
Posts: 7,362

Reg:Index Function

I think that the following does what you wanted:

data a (keep=id i position);

  informat id $30.;

  input id;

  delimiter='!';

  position=0;

  i=1;

  do while (substr(id,position+1) ne "");

    position=position+findc(substr(id,position+1),delimiter);

    output;

    i+1;

  end;

cards;

1!2!3445!!!

;

run;

proc print;

run;

which, for the above example, produces:

                         Obs        id         position    i

                             1     1!2!3445!!!        2       1

                             2     1!2!3445!!!        4       2

                             3     1!2!3445!!!        9       3

                             4     1!2!3445!!!       10       4

                             5     1!2!3445!!!       11       5

Super User
Posts: 9,676

Reg:Index Function

After check documentation.I found this:

data a;
input id$ 1-10; 
one=findc(id,'!',1);
two=findc(id,'!',one+1);
three=findc(id,'!',two+1);
four=findc(id,'!',three+1);
put one= two= three= four=;
cards;
1!2!3445!!
;
run;

Ksharp

Ask a Question
Discussion stats
  • 3 replies
  • 121 views
  • 0 likes
  • 3 in conversation