본문 바로가기
Programming/SAS

[SAS 기초] 조건문(WHERE ~ IF ELSE)

by Kanii 2022. 4. 26.
반응형

오늘은 SAS에서 조건문에 대해 공부해보겠다.


조건/반복문 공부를 위한 예제로 다음과 같은 데이터를 생성하였다.

DATA : example1

 (데이터 생성 관련 코드는 이전 게시물을 참고!)

2022.03.23 - [Programming/SAS] - [SAS 기초] 데이터 생성과 처리 관련 구문

 

[SAS 기초] 데이터 생성과 처리 관련 구문

이번 포스팅에서는 SAS 기초 문법을 살펴보겠다. - 앞으로는 동일한 주제에 대해서 SAS, R, Python 버전으로 모두 포스팅 하려고 합니다. 3가지 버전으로 모두 포스팅이 완료되는대로 글 마지막에 링

harang3418.tistory.com

 

1. WHERE 구문

 

 where 조건 구문은 조건에 맞는 데이터를 출력할 수 있도록 한다.

용법은 다음과 같다.

  DATA 라이브러리.새로운데이터명;
  SET 라이브러리.기존데이터명;
  WHERE 조건문 ;
  RUN ;
WHERE 조건문 예제

 

위 예제는 하나의 조건문을 사용한 결과이지만, AND/OR을 사용하여 여러 조건문을 동시에 고려할 수도 있다.

 

 /* Where 구문 - AND 예제*/
 DATA MYSAS.where2;
 SET mysas.example1;
 WHERE score >= 90 AND class = '1반';
 RUN;
 
 PROC PRINT DATA=MYSAS.where2;
 RUN;

WHERE - AND 예제

 /* Where 구문 - OR 예제 */
 DATA MYSAS.where3;
 SET mysas.example1
 WHERE score >= 90 OR major = 'Statistics';
 RUN;
 
 PROC PRINT DATA=MYSAS.where3;
 RUN;

WHERE - OR 예제


2. LIKE /CONTAINS 문

 

LIKE /CONTAINS 구문은 WHERE처럼 조건 구문 자체로 작동하는게 아니라, 조건을 만들어주는(?) 구문이다.

두 구문 모두 어떤 특정 값을 포함하는 데이터를 추출할 수 있게하지만, 구체적인 용법이 다르다. 

 

LIKE 구문은 찾고싶은 특정 문자열의 위치를 지정해서 추출할 수 있게하며, 다음과 같은 용법을 갖는다.

 WHERE 변수 LIKE  '%N'; 

LIKE 뒤에 조건부 부분은 특정 문자열을 나타내는 N과 언더바'_' 그리고, '%'를 통해 나타낼 수 있다.

언더바 _ 는 한 자리의 임의의 문자를 나타내고,

퍼센트 %는 빈 자리를 포함한 여러 임의의 자리의 문자를 나타낸다.

 

예를 들어, 전체 문자열의 길이와는 상관 없이 번째 자리가 '유'로 시작하는 데이터를 뽑고 싶다면 : '유%' 

번째 자리가 '유'로 시작하는 데이터를 뽑고 싶다면 : '_유%' 라고 설정할 수 있다.

 

예제를 살펴보자.

 /* LIKE 문 */
 DATA MYSAS.like;
 SET MYSAS.example1;
 WHERE major like 'S%';
 RUN;
 
 PROC PRINT DATA=MYSAS.like;
 RUN;

LIKE 예제

CONTAINS 구문은 LIKE 구문처럼 문자열의 포함 위치를 지정해주지는 못하며, 단순히 포함 유무만을 포함한다.

 /* CONTAINS 문 */
 DATA MYSAS.contains;
 SET MYSAS.example1;
 WHERE major CONTAINS 't';
 RUN;
 
 PROC PRINT DATA=MYSAS.contains;
 RUN;

CONTAINS 예제


3. IF/ELSE/THEN

 

IF 조건문은 ELSE / THEN과 어떻게 조합하느냐에 따라 정말 다양한 역할을 수행할 수 있다.

IF 조건식 1 THEN 명령문 1;
ELSE IF 조건식 2 THEN 명령문 2;
ELSE 명령문 3;

IF 조건식 1; 하나만 써도 되고, IF/ELSE/THEN을 모두 조합해도 되고 원하는 조건 형태에 따라서 다양하게 조합하여 사용할 수 있다.

또한 명령문에 해당하는 부분에는 새로운 변수를 생성하거나, 기존 관측 값을 삭제하도록(THEN DELETE) 할 수도 있다.

 

IF 조건문을 사용하여 새로운 변수를 생성하는 예제를 살펴보자.

 /* IF 문 */
 DATA MYSAS.IF;
 SET MYSAS.example1;
 IF score >=90 THEN grade ='A';
 ELSE IF score >=80 THEN grade = 'B';
 ELSE grade = 'C';
 RUN;
 
 PROC PRINT DATA=MYSAS.IF;
 RUN;

IF 예제


다음 포스팅에서는 반복문에 대해서 알아보겠다.

끄읕!


> R - 버전

(준비중)

 

> Python - 버전

(준비중)

반응형

댓글