포스팅 목차
o OUTPUT 구문
1. 목 적
OUTPUT 구문은 SAS 데이터 세트에 현재 처리 중인 관측치를 작성한다. OUTPUT 구문은 데이터 스텝의 종료 시점에 작성되지 않고, OUTPUT 구문이 실행되는 즉시 데이터 세트에 현재 관측치를 작성한다. 만약 OUTPUT 구문에 출력되는 데이터 세트 이름을 지정하지 않으면, 관측치는 DATA 구문에 나열된 모든 데이터 세트에 작성된다.
2. 문 법
OUTPUT<data-set-name(s)>; |
1) 인수 사용하지 않음
별도의 인수 없이 OUTPUT 구문을 단독으로 사용하면 현재 관측치가 DATA 구문에 나열된 모든 데이터 세트에 작성되도록 한다. 만약 MODIFY 구문이 함께 사용되면, 인수 없는 OUTPUT 구문은 MODIFY 구문에 지정된 데이터 세트의 끝에 현재 관측치를 추가하여 작성한다.
2) data-set-name
관측치를 작성하기 위한 데이터 세트의 이름을 지정한다. OUTPUT 구문에 지정된 모든 데이터 세트 이름은 DATA 구문에 지정해야 한다. 데이터 세트 이름 대신에 운영 시스템에서 사용되는 파일에 대한 물리적 경로명을 지정할 수 있다. 경로명은 단일 혹은 이중 인용부호 안에 작성해야 한다.
제한 : | OUTPUT 구문에 지정된 모든 데이터 세트 이름은 DATA 구문에 존재해야 한다. |
Tip : | 데이터 세트 이름 대신에 운영 시스템에서 사용되는 파일에 대한 물리적 경로명을 지정할 수 있다. 경로명은 단일 혹은 이중 인용부호 안에 작성해야 한다. |
Tip : | 데이터 스텝의 DATA 구문에 지정된 데이터 세트 숫자 만큼 OUTPUT 구문에 다수의 데이터 세트를 지정 할 수 있다. |
3. 구분
SAS 기본 구문 (실행 구문)
4. 상세설명
1) OUTPUT 구문이 관측치를 작성하는 시기와 장소
OUTPUT 구문은 데이터 스텝의 종료 시점에 작성되지 않고, OUTPUT 구문이 실행되는 즉시 데이터 세트에 현재 관측치를 작성하도록 한다. 만약 OUTPUT 구문에 출력되는 데이터 세트 이름을 지정하지 않으면, 관측치는 DATA 구문에 나열된 모든 데이터 세트에 작성된다.
2) 암묵적 출력과 명시적 출력
기본적으로, 모든 데이터 스텝은 생성되는 출력 데이터 세트에 관측치를 작성하도록 개별 반복(iteration)의 종료 시점에 암묵적 OUTPUT 구문을 내부적으로 포함하고 있다. 데이터 스텝에서 명시적 OUTPUT 구문을 사용하면 위의 암묵적 자동 출력을 제어하고, 단지 명시적 OUTPUT 구문이 실행되는 경우에 데이터 세트에 관측치를 추가한다. 데이터 세트에 관측치를 작성하기 위하여 OUTPUT 구문을 사용하면 DATA 스텝의 종료 시점에서 암묵적 OUTPUT 구문은 실행되지 않는다. 이런 경우에 데이터 스텝은 단지 명시적 OUTPUT 구문이 실행되는 경우에만 데이터 세트에 관측치를 작성한다. OUTPUT 구문은 단독으로 사용되거나 IF-THEN, SELECT 구문의 일부 또는 DO 반복문에서 사용할 수 있다.
3) MODIFY 구문과 함께 사용되는 경우
MODIFY 구문과 OUTPUT 구문을 함께 사용하는 경우에 REMOVE 구문과 REPLACE 구문이 사용되면 데이터 스텝 반복(iteration)의 종료 시점에 암묵적 출력(OUTPUT) 기능을 제어한다.
OUTPUT 구문과 REPLACE 또는 REMOVE 구문이 해당 관측치에 함께 적용되면, 관측치의 포인터의 위치를 정확하게 유지하기 위하여 OUTPUT 작업을 마지막으로 실행하라.
5. 비교 구문
- OUTPUT 구문은 SAS 데이터 세트에 관측치를 작성하고, PUT 구문은 외부파일 또는 SAS로그에 변수값이나 텍스트 문자열을 작성한다.
- 주어진 데이터 세트에 관측치가 작성되는 시점을 지정하기 위하여 OUTPUT 구문을 사용하라. 지정된 출력 데이터 세트에 작성되는 변수를 지정하기 위하여 DATA 구문에서 KEEP= 또는 DROP= 데이터 세트 옵션을 사용하거나 DATA 스텝 내에서 KEEP 또는 DROP 구문을 사용하라.
- OUTPUT 구문과 MODIFY 구문을 함께 사용하는 경우에는 다음 항목이 적용된다.
- OUTPUT, REPLACE, REMOVE 구문이 사용되면 데이터스텝의 종료 시점에 기본적으로 적용되는 암묵적 출력 작업을 수행하지 않는다. (일반적으로 OUTPUT 구문이 기본 작업이지만, MODIFY 구문이 사용 될 때에는 REPLACE 구문이 기본작업이 된다.) 데이터 스텝에서 위의 문장 중에서 하나가 사용되면, 데이터 세트에 추가되는 새로운 관측치에 대한 출력 내용을 명시적으로 프로그램을 작성해야 한다.
- OUTPUT, REPLACE, REMOVE 구문은 서로 독립적으로 작업을 수행한다. 적용 순서가 논리적이면 다수의 구문이 동일 관측치에 적용 될 수 있다.
- OUTPUT 구문과 REPLACE 또는 REMOVE 구문이 해당 관측치에 함께 적용되면, 관측치의 포인터의 위치를 정확하게 유지하기 위하여 OUTPUT 작업을 마지막으로 실행하라.
6. 관련 구문
구문명 | 구문내용 |
DATA 구문 | DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다. |
MODIFY 구문 | 새로운 SAS 데이터 세트를 추가로 생성하지 않고 기존에 존재하는 SAS 데이터 세트의 관측치에 대하여 대체, 삭제, 추가 작업을 수행한다. |
OUTPUT 구문 | SAS 데이터 세트에 현재 처리 중인 관측치를 작성한다. OUTPUT 구문은 데이터 스텝의 종료 시점에 작성되지 않고, OUTPUT 구문이 실행되는 즉시 데이터 세트에 현재 관측치를 작성한다. |
PUT 구문 | 가장 최근 FILE 구문에서 지정한 SAS 로그, SAS 출력 윈도우, 또는 외부 파일 등에 출력 라인을 작성한다. |
REMOVE 구문 | SAS 데이터 세트에서 관측치를 삭제한다. |
REPLACE 구문 | 추가로 새로운 SAS 데이터 세트를 생성하지 않고 기존에 존재하는 SAS 데이터 세트에 존재하는 관측치를 대체(갱신)한다. |
7. 예 제
예제1 : 간단한 OUTPUT 구문 사용하기
다음 예제는 OUTPUT 구문 사용 방법을 보여준다.
코드 중에서 다음 라인은 현재 관측치를 SAS 데이터 세트에 작성하도록 한다.
SAS Program |
output;
코드 중에 다음 라인은 지정된 조건이 참이면 현재 관측치를 SAS 데이터 세트에 작성한다.
SAS Program |
if deptcode gt 2000 then output;
다음 라인은 PHONE 변수의 값이 결측치 일 때 관측치를 데이터 세트 MARKUP에 작성한다.
SAS Program |
if phone=. then output markup;
예제2 : 개별 입력 라인에 대하여 다중 관측치 생성
입력 데이터의 각 라인에서 두 개 이상의 관측치를 생성 할 수 있다. 다음 SAS 프로그램은 입력 데이터 세트 SULFA의 개별 관측치를 읽어서 출력 데이터 세트 RESPONSE에 3개의 관측치를 생성한다.
SAS Program |
data response(drop=time1-time3);
set sulfa;
time=time1;
output;
time=time2;
output;
time=time3;
output;
run;
예제3 : 단일 입력 파일에서 다중 데이터 세트 생성
하나의 입력 파일을 읽어서 다수의 SAS 데이터 세트를 생성 할 수 있다. 다음 예제에서, OUTPUT 구문은 2개의 데이터 세트에 관측치를 각각 작성한다.
SAS Program |
options yearcutoff= 1920;
data ozone oxides;
infile file-specification;
input city $ 1-15 date date9.
chemical $ 26-27 ppm 29-30;
if chemical='O3' then output ozone;
else output oxides;
run;
예제4 : 입력 데이터에서 다수의 입력 라인을 읽어서 하나의 관측치 생성하기
하나의 관측치에 여러 입력 관측치에 대한 내용을 요약 할 수 있다. 다음 예제에서, OUTPUT 구문은 입력 데이터 세트에서 처음 10개 관측치를 읽어서 DEFFCTS 변수의 누적 합을 하나의 관측치로 생성한다.
SAS Program |
data discards;
set gadgets;
drop defects;
reps+1;
if reps=1 then total=0;
total+defects;
if reps=10 then do;
output;
stop;
end;
run;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 PUT 구문 (0) | 2022.02.04 |
---|---|
【SAS Statement】 PAGE 구문 (0) | 2022.02.04 |
[SAS Statement] OPTIONS 구문 (0) | 2022.02.04 |
【SAS Statement】 Null 구문 (0) | 2022.02.04 |
【SAS Statement】 MODIFY 구문 (0) | 2022.02.03 |
댓글