오늘은 SAS에서 조건문에 대해 공부해보겠다.
조건/반복문 공부를 위한 예제로 다음과 같은 데이터를 생성하였다.
(데이터 생성 관련 코드는 이전 게시물을 참고!)
2022.03.23 - [Programming/SAS] - [SAS 기초] 데이터 생성과 처리 관련 구문
[SAS 기초] 데이터 생성과 처리 관련 구문
이번 포스팅에서는 SAS 기초 문법을 살펴보겠다. - 앞으로는 동일한 주제에 대해서 SAS, R, Python 버전으로 모두 포스팅 하려고 합니다. 3가지 버전으로 모두 포스팅이 완료되는대로 글 마지막에 링
harang3418.tistory.com
1. WHERE 구문
where 조건 구문은 조건에 맞는 데이터를 출력할 수 있도록 한다.
용법은 다음과 같다.
DATA 라이브러리.새로운데이터명;
SET 라이브러리.기존데이터명;
WHERE 조건문 ;
RUN ;

위 예제는 하나의 조건문을 사용한 결과이지만, AND/OR을 사용하여 여러 조건문을 동시에 고려할 수도 있다.
/* Where 구문 - AND 예제*/
DATA MYSAS.where2;
SET mysas.example1;
WHERE score >= 90 AND class = '1반';
RUN;
PROC PRINT DATA=MYSAS.where2;
RUN;
|
/* Where 구문 - OR 예제 */
DATA MYSAS.where3;
SET mysas.example1;
WHERE score >= 90 OR major = 'Statistics';
RUN;
PROC PRINT DATA=MYSAS.where3;
RUN;
|
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;
|
CONTAINS 구문은 LIKE 구문처럼 문자열의 포함 위치를 지정해주지는 못하며, 단순히 포함 유무만을 포함한다.
/* CONTAINS 문 */
DATA MYSAS.contains;
SET MYSAS.example1;
WHERE major CONTAINS 't';
RUN;
PROC PRINT DATA=MYSAS.contains;
RUN;
|
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;
|
다음 포스팅에서는 반복문에 대해서 알아보겠다.
끄읕!
> R - 버전
(준비중)
> Python - 버전
(준비중)
'Programming > SAS' 카테고리의 다른 글
[SAS 기초] Input/Put (0) | 2022.07.14 |
---|---|
[SAS 기초] Informat / Format (0) | 2022.05.26 |
[SAS 기초] 데이터 정렬 및 병합 구문 (SORT/MERGE/SET) (0) | 2022.05.19 |
[SAS 기초] 반복문 DO 사용법 (0) | 2022.05.18 |
[SAS 기초] 데이터 생성과 처리 관련 구문 (0) | 2022.03.23 |
댓글