포스팅 목차
COMPGED
일반화된 편집 거리 계산에 의해 두 문자 사이의 거리를 계산한다.
문자열2를 기준으로 문자열1의 거리를 측정한다. (문자열1과 문자열2가 바뀌면 값은 변경될수 있음)
Category: | 문 자 |
MAIN |
문 법
COMPGED (string-1, string-2 <,cutoff> <,modifiers>) |
- 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 함수를 사용한다.
관련 함수
함수명 | 함수 내용 |
COMPARE | 두 문자 차이가 있는 것중 가장 왼편의 위치를 반환한다. |
COMPGED | 일반화된 편집 거리 계산에 의해 두 문자 사이의 거리를 계산한다. |
COMPLEV | Levenshtein 편집 거리 계산에 의해 두 문자의 거리 계산한다. |
CALL COMPCOST | COMPGED 함수에서 사용되는 운영 비용을 정의한다. |
SPEDIS |
두 단어 사이의 비대칭적 스펠링 거리로써 표현되는 두 단어 매칭의 가능성을 정의한다. |
예 제
예 제 1 :
문자열1과 문자열2을 비교하여 거리를 두 문자열 차이 거리를 반환한다.
SAS Statements |
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
;
Results |
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 |
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
;
Results |
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 |
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
;
Results |
STRING1=Ron STRING2=Run
DISTANCE=100
STRING1=ABC STRING2=AB
DISTANCE=33
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 함수(SAS Function) 리스트 링크 |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 100. COMPOUND 함수 (0) | 2018.11.30 |
---|---|
【SAS 함수】 99. COMPLEV 함수 (0) | 2018.11.30 |
【SAS 함수】 97. COMPBL 함수 (0) | 2018.11.29 |
【SAS 함수】 96. COMPARE 함수 (0) | 2018.11.29 |
[SAS 함수] 95. COMB 함수 (0) | 2018.11.29 |
댓글