BookmarkSubscribeRSS Feed

[SAS 프로그래밍 고수 백승민] [비교연산자] Pattern Matching을 위한 비교연산자

Started ‎06-11-2020 by
Modified ‎06-11-2020 by
Views 100

* 출처 : http://cafe.daum.net/statsas/3F8j/211

 

질문 : http://cafe.daum.net/statsas/B3m/14015

 

* 비교 연산자(Comparison Operators) - Pattern Matching;

 

DATA BACK;
INPUT VAR $40.;
CARDS;
가나다닭구이
다라나다나차마파전
다차마다가아낮바아가차바나호박전
나다닭구이만세
ABCD
;

* =:(EQ:) 비교연산자 : 가나로 시작하는 데이터;
DATA BACK1;
SET BACK;
IF VAR =: '가나';
RUN;

 

* IN: 비교연산자 : '닭구이' '다차' '나다' 중에 하나로 시작하는 데이터;
DATA BACK2;
SET BACK;
IF VAR IN: ('닭구이','다차','나다');
RUN;

 

* INDEX 함수 : '닭구이'가 포함된 데이터(중간에 포함된 데이터도 출력);
DATA BACK3;
SET BACK;
IF INDEX(VAR,'닭구이')>0 THEN TYPE = '닭구이';
RUN;

 

* REVERSE 함수;
* 참고 : http://www.statwith.pe.kr/SAS/1.FUNCTION/F0356.htm;
DATA BACK4;
SET BACK;
TEST = KREVERSE(VAR);
IF COMPRESS(KREVERSE(VAR)) =: '이구닭' THEN TYPE = '닭구이';
RUN;

 

* CONTAINS 절 : '닭구이'가 포함된 데이터 선택;
DATA BACK5;
SET BACK;
*WHERE VAR CONTAINS '닭구이';
WHERE VAR ? '닭구이';
RUN;

 

* PROC SQL의 LIKE 연산자(데이터 스텝에서 지원안함);
PROC SQL;
CREATE TABLE BACK6 AS
SELECT CASE WHEN VAR LIKE '%닭구이' THEN '닭구이'
WHEN VAR LIKE '%파전' THEN '파전'
WHEN VAR LIKE '%호박전' THEN '호박전'
ELSE '기타' END AS TYPE,
A.*
FROM BACK A;
QUIT;

 

* 정규식(SAS regular) - 데이터 스텝에서 PROC SQL의 LIKE 연산자가 지원이 안됨.;
* 참고 : http://www.statwith.pe.kr/SAS/1.FUNCTION/F0363.htm;
data BACK7;
SET BACK;
IF RXMATCH(RXPARSE(" '닭구이' @0"),TRIM(VAR)) THEN TYPE = '닭구이';
ELSE IF RXMATCH(RXPARSE(" '파전' @0"),TRIM(VAR)) THEN TYPE = '파전';
ELSE IF RXMATCH(RXPARSE(" '호박전' @0"),TRIM(VAR)) THEN TYPE = '호박전';
run;

 

* 정규식(Perl regular);
* 참고 : http://www.statwith.pe.kr/SAS/1.FUNCTION/F0330.htm;
data BACK8;
SET BACK;
IF prxmatch(prxparse("/닭구이$/"),TRIM(VAR)) THEN TYPE = '닭구이';
ELSE IF prxmatch(prxparse("/파전$/"),TRIM(VAR)) THEN TYPE = '파전';
ELSE IF prxmatch(prxparse("/호박전$/"),TRIM(VAR)) THEN TYPE = '호박전';
run;
 

Version history
Last update:
‎06-11-2020 09:58 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags