포스팅 목차
o IF 구문(부분 분할)
1. 목 적
부분 분할 IF 구문은 지정된 표현식의 조건을 만족하는 관측치에 대하여 프로그램 처리를 계속 수행한다.
부분 분할 IF 구문은 데이터 스텝에서 IF 구문에 지정된 표현식을 만족하는 데이터 레코드 또는 관측치에 대하여 이후 처리를 계속 진행하도록 한다. 즉, 지정된 표현식을 만족하는 (표현식이 참인 경우) 관측치 또는 레코드(표현식의 결과값이 0 또는 결측치가 아닌 경우)에 대하여, 데이터 스텝에서 이후에 존재하는 구문들이 실행되고, 표현식을 만족하는 관측치가 출력 데이터 세트에 출력된다.
표현식이 거짓이라면(표현식의 결과값이 0 또는 결측치), 해당 관측치 또는 레코드에 대한 처리를 중지하고 데이터 스텝의 나머지 프로그램 문장은 실행되지 않는다. 부분 분할 IF 구문은 관측치 처리를 중지시키는 추가 구문이 필요하지 않기 때문에, 즉시 실행을 데이터 스텝의 시작으로 반환한다.
2. 문 법
IF expression; |
- expression
SAS 표현식을 지정한다.
3. 범 주
SAS 기본 구문 (실행 구문)
4. 상세 설명
부분 분할 IF 구문은 데이터 스텝에서 IF 구문에 지정된 표현식을 만족하는 데이터 레코드 또는 관측치에 대하여 이후 처리를 계속 진행하도록 한다. 즉, 지정된 표현식을 만족하는(표현식이 참인 경우) 관측치 또는 레코드(표현식의 결과값이 0 또는 결측치가 아닌 경우)에 대하여, 데이터 스텝에서 이후에 존재하는 구문들을 계속 처리하도록 하고, 출력 데이터 세트에는 표현식을 만족하는 관측치를 출력한다. 결과 데이터 세트는 원시 외부 파일 또는 SAS 데이터 세트의 일부 데이터를 포함한다.
만약 표현식이 거짓이라면(표현식의 결과값이 0 또는 결측치), 관측치 또는 레코드에 대한 처리를 중지하고 데이터 스텝의 나머지 프로그램 문장은 실행되지 않는다. 부분 분할 IF 구문은 관측치 처리를 중지시키는 추가 구문이 필요하지 않기 때문에, 실행을 즉시 데이터 스텝의 시작으로 반환한다.
5. 비교 사항
- 부분 분할 IF 구문은 다음 IF-THEN 구문과 동일하다.
if not (expression) then delete;
- 데이터를 생성하는 경우에, 관측치를 포함하는 조건을 지정하는 것이 효율적이면 부분 분할 IF 구문을 사용하고, 관측치를 배제하는 조건을 지정하는 것이 더 효율적이면 DELETE 구문을 사용하라.
- 부분 분할 IF 구문과 WHERE 구문은 항상 동일한 결과를 생성하지 않는다. 일부 경우에 두 문장은 서로 다른 작업을 수행하여, 다른 출력 데이터 세트를 생성한다. 가장 중요한 차이점은 다음과 같다.
- 부분 분할 IF 구문은 프로그램 데이터 벡터(PDV)에 모든 데이터를 읽은 후에 조건에 해당하는 관측치를 선택하지만, WHERE 구문은 프로그램 데이터 벡터(PDV)에 데이터를 읽기 전에 지정된 조건에 해당하는 관측치를 선택하여 PDV로 읽는다. 입력 데이터에서 프로그램 데이터 벡터(PDV)로 개별 관측치를 모두 읽어야 하기 때문에 일반적으로 부분 분할 IF 구문이 WHERE 구문 보다 비효율적이다.
- 부분 분할 IF 구문과 WHERE 구문은 SAS 데이터 세트를 끼우넣기(Interleave), 결합(Merge), 갱신(Update) 작업을 수행하는 데이터 세트에서 서로 다른 결과를 생산 할 수 있다.
- 부분 분할 IF 구문이 MERGE 구문과 함께 사용되는 경우에 현재 관측치가 결합 된 이후에 관측치가 선택된다. WHERE 구문이 MERGE 구문과 함께 사용되는 경우에는 각각의 입력 데이터 세트에서 WHERE 구문의 선택 기준에 해당하는 관측치를 먼저 선택한 후에 관측치를 결합한다.
- 부분 분할 IF 구문은 기존에 존재하는 데이터 세트 또는 INPUT 구문을 사용하여 읽어 들이는 원시 데이터로부터 관측치를 선택 할 수 있다. WHERE 구문은 기존에 존재하는 SAS 데이터 세트로부터 관측치를 선택 할 수 있다.
- 부분 분할 IF 구문은 실행문이지만, WHERE 구문은 실행문이 아니다.
6. 관련 구문
구문명 | 구문내용 |
DELETE 구문 | 현재 실행 중인 관측치에 대한 처리를 중지하여, 출력 데이터에서 관측치를 삭제하여 출력하지 않도록 한다. |
DO 구문 | 그룹 단위로 실행하기 위한 SAS 문장의 그룹을 지정하라. |
DO 반복 구문 | 인덱스 변수의 값에 따라서 DO 구문과 END 구문 사이에 작성한 구문을 반복하여서 실행한다. |
IF-THEN/ELSE 구문 |
지정한 조건을 만족하는 관측치에 대하여 SAS 문장을 실행한다. (IF 조건문) |
부분 분할 IF 구문 | 지정된 표현식의 조건을 만족하는 관측치에 대하여 프로그램 처리를 계속 수행한다. |
WHERE 구문 | SAS 데이터 세트에서 특정 조건에 해당하는 관측치를 선택한다. |
- WHERE= 데이터 세트 옵션
- WHERE-표현식 처리 방법 in SAS Language Reference: Concepts
7. 예 제
예제 : 관측치 제한
다음 예제는 변수 SEX의 값이 F 인 경우의 관측치만 데이터세트에 출력한다.
if sex='F';
다음 예제는 변수 AGE의 값이 결측치 또는 0이 아닌 모든 관측치를 데이터 세트에 포함한다.
if age;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 INFILE 구문 (0) | 2022.02.01 |
---|---|
【SAS Statement】 IF-THEN/ELSE 구문 (0) | 2022.02.01 |
【SAS Statement】 GO TO 구문 (0) | 2022.02.01 |
【SAS Statement】 FORMAT 구문 (0) | 2022.02.01 |
【SAS Statement】 FOOTNOTE 구문 (0) | 2022.02.01 |
댓글