일/Data Mining

SAS 에서 문자열 정규식 매칭하기 : prxmatch prxparse regular expression

LEEHK 2012. 7. 14. 14:46

data testkwd;
infile datalines delimiter='09'x;
length keyword $ 100;
input keyword;
datalines;
안녕하세요
이화경입니다
반갑습니다
람이는예뻐요
1번도이쁘고
2번도이쁘고
1233423452
000-0000-0000
전화번호테스트데이터
123.242.45.657
아이피테스트데이터
이 예시 코드는
숫자와 특수기호 등으로 이루어진 아래 키워드들을 제거하려구요.
왜냐면 지금 데이터 도메인이 그런 것들을 빼는 게 더 깔끔해보여서용~
12321.12321
234.234.
2542534.
6756756.2342.
0.00kg
0.00
0+00
0+00은0이래요.
하하하하하하
복직해서좋아요
일은즐겁답니다
예시키워드 너무 지저분하다
훗훗훗
sas에서정규식을쓰러면 아래와같이하세요
;
run;

 

 

data testkwd_normal(compress=yes)
  testkwd_delete(compress=yes)
  ;
set testkwd;

comp_kword=compress(lowcase(keyword));

* 숫자형 . - + : ^  들로 이루어진 키워드 제거 ;
if prxmatch(prxparse("/^[(\d)\.\-\+\:\^]+$/"), STRIP(comp_kword)) then output testkwd_delete;

 

* 전화번호, ip 패턴 삭제 - 것들도 사실은 위에서 다 빼기 때문에 아래 두 줄은 필요 없- 하지만 만약 특정 패턴이 필요하다면 아래와 같이.; 
*else if prxmatch(prxparse('/\d{2,3}-\d{3,4}-\d{4}/'), comp_kword) then output testkwd_delete;
*else if prxmatch(prxparse('/\d{2,3}.\d{2,3}.\d{2,3}.\d{2,3}/'), comp_kword) then output testkwd_delete;

 

else output testkwd_normal;

run;  

 

 


 

++

 

붉은 글씨 부분에 정규식 문법을 사용하면 됨.

Tip. sas는 문자열 변수가 varchar가 아닌 char type인데, length에 따라,  문자열 null 이 아닌 공백 같은 문자가 채워질 때가 있다.

retain으로 문자열 변수를 선언하여 줄단위 연산을 하여 붙일 때도. 앞뒤공백 제거하고 붙여야 한다.

마찬가지로 정규식 매칭할 때 특정 패턴으로 끝나는 문자열을 찾고자 한다면, 비교대상 문자열 변수의 뒤에 붙은 공백을 제거하는 함수를 써서 비교해야 한다.

 

 

 

' > Data Mining' 카테고리의 다른 글

coursera  (0) 2012.09.17
SAS 2바이트 문자 매칭, kindex() vs kindexc()  (0) 2012.09.12
Big Data, Hadoop, Pig. Data Mining.   (0) 2012.05.10
SAS코리아, 마이닝 챔피언십. 은상.  (0) 2009.11.16
[SAS tip] ORACLE DB 연결에러.  (0) 2009.11.10