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 |