SAS FUNCTION
SAS 9.1.3
Go to Documentation Home
HOME
Go to Book List
FUN_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
SAS  9.1.3
Go to Feedback page
MAIL
COMPGED
Go to previous page
Previous
Go to next page
Next
처음메뉴로

98. COMPGED



일반화된 편집 거리 계산에 의해 두 문자 사이의 거리를 계산한다.

문자열2를 기준으로 문자열1의 거리를 측정한다.

(문자열1과 문자열2가 바뀌면 값은 변경될수 있음)

Category: 문 자

문 법
인 수
참 고
예 제
함 수 비 교

문법

MAIN

COMPGED (string-1, string-2 <,cutoff> <,modifiers>)

Arguments

string-1,string-2
는 문자 상수, 변수 , 표현을 지정.

modifiers(변경자)
i 또는 I   : 문자열의 대소문차이를 무시하고 비교

l 또는 L  : 비교전에 문자열의 앞의 공백을 제거후 비교

n 또는 N : 문자열안의 인용부호를 제거하고, 대소문자 차이를 무시하고 비교

:(colon)  : 문자열1과 문자열2중에 짧은 크기의 length에 맞추어 긴 length의 문자열 길이를 잘라서 맞추어서 비교하고,

          만약 변경자가 지정이 되지 않은경우에는 짧은 length에 공백을 추가하여 긴 length문자열에 맞추어서 비교를 한다


참고

* 일반적인 거리 계산에 대한 비용
연산 기본비용

설명

APPEND 50 문자열 뒤에 한 문자가 추가
BLANK 10 공란이 추가된 경우
DELETE 100 한 문자가 삭제된 경우
DOUBLE 20 문자열에서 동일 문자가 반복해서 추가된 경우
FDELETE 200 문자열 맨 앞의 문자가 삭제된 경우
FINSERT 200 문자열 맨 앞에 문자가 삽입된 경우
FREPALCE 200 문자열 맨 앞의 문자가 변경된 경우
INSERT 100 문자열에서 문자가 삽입된 경우
MATCH 0 두 개의 문자열이 동일한 경우
PUNCTUATION 30 문자열에 인용부호가 삽입된 경우
REPLACE 100 문자열에서 문자가 변경된 경우
SINGLE 20 문자열에서 동일한 문자가 한 개의 문자로 변경
SWAP 20 문자열에서 두 개의 문자가 교환된 경우
TRUNCATE 10 문자열에서 뒤의 문자가 잘린 경우
 

* 기본비용을 변경하기 위해서는 CALL COMPCOST 함수를 사용한다.


예제

MAIN

 

예 제 1 :

문자열1과 문자열2을 비교하여 거리를 두 문자열 차이 거리를 반환한다.

SAS Statements Results
data COMPGED;
     infile datalines missover;
     input String1 $char8. +1 String2 $char8. +1 Operation $40.;
     GED = compged(string1, string2);
datalines;
baboon baboon match
baXboon baboon insert
baoon baboon delete
baXoon baboon replace
baboonX baboon append
baboo baboon truncate
babboon baboon double
babon baboon single
baobon baboon swap
bab oon baboon blank
bab,oon baboon punctuation
bXaoon baboon insert+delete
bXaYoon baboon insert+replace
bXoon baboon delete+replace
Xbaboon baboon finsert
aboon baboon trick question: swap+delete
Xaboon baboon freplace
axoon baboon fdelete+replace
axoo baboon fdelete+replace+truncate
axon baboon fdelete+replace+single
baby baboon replace+truncate*2
balloon baboon replace+insert
;

String1 String2 Distance Operation
baboon  baboon     0 match
baXboon baboon   100 insert
baoon   baboon   100 delete
baXoon  baboon   100 replace
baboonX baboon    50 append
baboo   baboon    10 truncate
babboon baboon    20 double
babon   baboon    20 single
baobon  baboon    20 swap
bab oon baboon    10 blank
bab,oon baboon    30 punctuation
bXaoon  baboon   200 insert+delete
bXaYoon baboon   200 insert+replace
bXoon   baboon   200 delete+replace
Xbaboon baboon   200 finsert
aboon   baboon   120 trick question: swap+delete
Xaboon  baboon   200 freplace
axoon   baboon   300 fdelete+replace
axoo    baboon   310 fdelete+replace+truncate
axon    baboon   320 fdelete+replace+single
baby    baboon   120 replace+truncate*2
balloon baboon   200 replace+insert

 

 

예 제 2 :

Cutoff(MAX)값 지정과 변경자 지정에 따른 비교를 한다.

SAS Statements Results
DATA _NULL_;
     INPUT @1 STRING1 $CHAR10.
           @11 STRING2 $CHAR10.;
     PUT "Function COMPGED";
     DISTANCE = COMPGED(STRING1, STRING2);
     IGNORE_CASE = COMPGED(STRING1, STRING2, 'I');
     LEAD_BLANKS = COMPGED(STRING1, STRING2, 'L');
     CASE_TRUNC = COMPGED(STRING1, STRING2, ':I');
     MAX = COMPGED(STRING1, STRING2, 250);
     PUT STRING1 = STRING2= /
     DISTANCE= IGNORE_CASE= LEAD_BLANKS= CASE_TRUNC= MAX= /;
DATALINES;
SAME      SAME
cAsE      case
Longer    Long
abcdef    xyz
   lead   lead
;

Function COMPGED
STRING1=SAME STRING2=SAME
DISTANCE=0 IGNORE_CASE=0 LEAD_BLANKS=0 CASE_TRUNC=0 MAX=0

Function COMPGED
STRING1=cAsE STRING2=case
DISTANCE=200 IGNORE_CASE=0 LEAD_BLANKS=200 CASE_TRUNC=0 MAX=200

Function COMPGED
STRING1=Longer STRING2=Long
DISTANCE=100 IGNORE_CASE=100 LEAD_BLANKS=100 CASE_TRUNC=100 MAX=100

Function COMPGED
STRING1=abcdef STRING2=xyz
DISTANCE=550 IGNORE_CASE=550 LEAD_BLANKS=550 CASE_TRUNC=550 MAX=250

Function COMPGED
STRING1=lead STRING2=lead
DISTANCE=320 IGNORE_CASE=320 LEAD_BLANKS=0 CASE_TRUNC=320 MAX=250 

예 제 3 :

Call Compcost 함수를 이용하여 기본 가격을 변경가능하다. Append의 거리를 33으로 변경한다.

SAS Statements Results
DATA _NULL_;
     INPUT @1 STRING1 $CHAR10.
           @11 STRING2 $CHAR10.;
     IF _N_ = 1 THEN CALL COMPCOST('APPEND=',33);
     DISTANCE = COMPGED(STRING1, STRING2);
     PUT STRING1= STRING2= / DISTANCE=;
DATALINES;
Ron Run
ABC AB
;

 

STRING1=Ron STRING2=Run
DISTANCE=100

STRING1=ABC STRING2=AB
DISTANCE=33


함수비교

Functions:

096.COMPARE

  037.CALL COMPCOST
  099.COMPLEV

2006년 백승민 제작하였답니다. 
( http://cafe.daum.net/statsas )