Help using Base SAS procedures

Re: String Difference in Percentage

Reply
Super User
Posts: 9,687

Re: String Difference in Percentage

If you are trying to make some EDIT DISTANCE for two string, then PG 's suggest is good, SAS has already built-in some function for that purpose.

Otherwise , try

data have;
input obs var1 $ var2 $;
datalines;
1 RAT CAT
2 BELL BALL
3 TIME TOM
;
run;
data want(drop=n i);
 set have;
 n=0;
 do i=1 to length(var1);
  if char(var1,i) ne char(var2,i) then n+1;
 end;
 dif=divide(n,length(var1));
run;

Xia Keshan

Contributor JAR
Contributor
Posts: 45

Re: String Difference in Percentage

Thank you so much!

Contributor JAR
Contributor
Posts: 45

Re: String Difference in Percentage

HI KSharp,

How will I use the same logic for two different string, where words (unlike character here) have pattern:

Here is an example:

String 1: "It is a cat"

String 2: "This is a cat"

Can I use SAS to calculate that "String2 is 25% different from String1"?

Jijil Ramakrishnan

Super User
Posts: 9,687

Re: String Difference in Percentage

OK. No problem.

data have;
input obs var1 & $40. var2 & $40.;
datalines;
1 It is a cat    This is a cat
2 a fox jump over a dog    Tom cat jump over a dog
;
run;
data want(drop=n i);
 set have;
 n=0;
 do i=1 to countw(var1);
  if upcase(scan(var1,i)) ne upcase(scan(var2,i)) then n+1;
 end;
 dif=divide(n,countw(var1));
run;

Xia Keshan

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