포스팅 목차
o DATA 구문
1. 목 적
DATA 구문은 DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다.
2. 문 법
DATA <... data-set-name-1 <(data-set-options-1)>> <... data-set-name-n <(data-set-options-n)>> </ <DEBUG> <NESTING> <STACK = stack-size>> <NOLIST>; DATA _NULL_ </ <DEBUG> <NESTING> <STACK = stack-size>> <NOLIST> ; DATA view-name <data-set-name-1 <(data-set-options-1)>> <... data-set-name-n <(data-set-options-n)>> / VIEW=view-name <(password-option><SOURCE=source-option>)> <NESTING> <NOLIST> ; DATA data-set-name / PGM=program-name <(password-option><SOURCE=source-option>)> <NESTING> <NOLIST> ; DATA VIEW=view-name <(password-option)> <NOLIST>; DESCRIBE; DATA PGM=program-name <(password-option)> <NOLIST>; <DESCRIBE;> <REDIRECT INPUT | OUTPUT old-name-1 = new-name=1 <... old-name-n = new-name-n>;> <EXECUTE;> |
인수를 지정하지 않으면, DATA 스텝은 연속적으로 생성되는 데이터세트 이름을 DATAn 형식으로 자동으로 지정한다. (n은 정수값)
1) Data-set-name
DATA 스텝이 생성하는 SAS 데이터 파일 또는 DATA 스텝 뷰의 이름을 지정한다. DATA 스텝 뷰를 생성하기 위해서는 적어도 하나의 data-set-name을 지정해야 하고, 그 data-set-name은 view-name과 일치해야 한다. 데이터 세트 이름으로 파일이 저장될 위치의 실제 경로와 SAS 파일 이름(SAS 확장자 포함)을 직접 지정할 수 있다.
DATA 'C:\WORK\TEST.sas7bdat'; SET SASHELP.CLASS; RUN; |
제한사항 : | data-set-name은 SAS 이름 규칙을 따라야 하고, 운영 환경에 따라서 추가적인 제한이 적용 될 수 있다. |
Tip : | SAS 데이터 세트를 생성 하지 않고 DATA 스텝을 실행 할 수 있다. |
관련사항 : | SAS 데이터 세트 이름의 유형에 대한 세부 사항과 개별 유형을 사용하는 경우에는, “Name in the SAS Language”를 참조 |
2) (data-set-options)
출력 데이터 세트에 관측치를 작성하는 경우에 DATA 스텝이 적용하는 옵션을 지정하라. 주로 사용되는 옵션으로는 KEEP=, DROP=, RENAME=, OBS=, FIRSTOBS= 등이 있다.
3) /DEBUG
대화식 프로그램 방식으로 디버깅 작업을 통하여 로직 에러와 데이터 에러를 확인할 수 있다.
4) /NESTING
DO-END 구문과 SELECT-END 구문을 여러 단계로 중첩하여 작성한 경우에 개별 단계의 시작과 끝을 알려주는 메시지를 SAS log에 출력한다. 이 옵션을 사용하여 일치하지 않는 DO-END 구문과 SELECT-END 구문을 디버깅할 수 있으며, 반복 구문을 여러 단계로 중첩하여 복잡하게 작성한 경우에 유용하다.
5) /STACK=stack-size
중첩하여 작성 가능한 LINK 구문의 최대 개수를 지정한다.
6) _NULL_
DATA 스텝을 실행할 때 출력 데이터 세트가 생성하지 되지 않도록 지정한다. 이 경우 추가적인 작업 결과를 LOG를 통하여 확인한다.
7) VIEW=view-name
입력 DATA 스텝 뷰 테이블(VIEW)을 저장하기 위하여 DATA 스텝이 사용하는 뷰(VIEW)의 이름을 정의한다. 하나의 DATA 스텝에는 하나의 뷰 테이블(VIEW)만 생성이 가능하다. 이 때문에 DATA 구문에 다수의 데이터 세트 이름을 지정한 경우에 view-name은 이 중에 하나와 동일하게 작성하여 사용해야 한다.
제한사항 : | view-name은 DATA 구문에 존재하는 여러 데이터 세트 이름 중에 하나와 일치해야 한다. |
제한사항 : | 하나의 DATA 스텝에서 하나의 뷰만 생성한다. |
Tip : | 만약 DATA 구문에 뷰(VIEW)를 생성하는 데이터 세트 이외의 추가 데이터 세트를 함께 지정하였으면, 이후의 DATA 스텝 또는 PROC 스텝에서 뷰(VIEW)가 사용되는 경우에 SAS는 추가로 지정된 데이터 세트를 생성한다. |
Tip : | SAS 매크로 변수는 뷰가 생성되는 경우에 바로 처리 될 것이다. 뷰가 사용되기 전까지 매크로 변수의 처리를 연기하기 위하여 SYMGET 함수를 사용하라. XE "SYMGET 함수:DATA 구문" |
주요기능 : | 예제2 : 데이터 스텝 VIEW 생성 예제3 : VIEW와 데이터 파일 동시에 생성하기 |
8) Password-option
컴파일되어 저장된(Stored compiled) 데이터 스텝 프로그램 또는 데이터 스텝 뷰에 접근 암호를 설정한다. 다음은 단계별로 해당하는 암호를 지정하는 옵션이다.
(1) ALTER=alter-password
SAS 데이터 파일에 수정(alter) 암호를 설정한다. 이 암호는 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰(view)를 보호하고 수정하는 작업을 관리한다.
필요사항 : | 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 할 때에 ALTER 암호를 지정했으면, 프로그램이나 뷰를 수정하기 위해서는 ALTER 암호를 사용해야 한다. |
필요사항 : | 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 생성 할 때에 ALTER 암호를 지정했으면, DESCRIBE 구문을 실행하기 위해서는 ALTER 암호가 필요하다. XE "DESCRIBE 구문:DATA 구문" |
별칭 : | PROTECT= |
(2) READ=read-password
SAS 데이터 파일에 읽기(read) 암호를 설정한다. 이 암호는 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 읽거나 실행하는 작업을 관리한다.
필요사항 : | 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 할 때에 READ 암호를 지정했으면, 프로그램이나 뷰를 읽기 위해서는 READ 암호가 필요하다. |
필요사항 : | 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 할 때에 READ 암호를 지정했으면, DESCRIBE 구문과 EXECUTE 구문을 실행하기 위하여 READ 암호를 사용해야 한다. 유효하지 않은 암호를 사용하면, DESCRIBE 구문만을 실행 할 것이다. |
Tip : | 컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성 할 때에 READ 암호를 지정했으면, 프로그램이나 뷰를 수정하기 위해서 암호가 필요하지 않다. |
별칭 | EXECUTE= |
(3) PW=password
읽기(READ)와 수정(ALTER) 암호를 동일한 암호로 설정한다.
9) SOURCE=source-option
다음 소스 옵션 중에서 하나를 지정한다.
(1) SAVE
컴파일 되어 저장된 데이터 스텝 프로그램 또는 DATA 스텝 뷰를 생성하는 소스 코드를 저장한다.
(2) ENCRYPT
소스 코드를 암호화하여 저장한다.
Tip : | 소스 코드를 암호화하는 경우에, ALTER 암호 옵션을 함께 사용하는 것이 좋다. 만약 ALTER 암호를 사용하지 않으면, SAS는 아래의 경고 메시지를 출력한다. WARNING: 암호화된 소스 라인을 가진 DATA STEP 저장된 프로그램 및 뷰에 대해 ALTER / PROTECT 암호를 사용하는 것이 좋습니다. |
(3) NOSAVE
소스 코드를 저장하지 않도록 지정한다.
경고 : | 만약 데이터 스텝 뷰를 NOSAVE 옵션을 지정하여 생성하면, 뷰는 현재 SAS 버전에서 다른 버전으로 이동 또는 복사되지 않을 수 있다. |
기본사항 : | SAVE |
10) PGM=program-name
향후에 DATA 스텝에서 데이터를 생성 또는 실행하기 위하여 컴파일하여 저장하기 위한 프로그램의 이름을 지정한다. 컴파일하여 저장하기 위한 프로그램을 생성하기 위하여, PGM=옵션 앞에 슬래쉬(/)를 지정하라. 향후에 이 프로그램을 실행하기 위하여는 슬래쉬(/)를 사용하지 않고 PGM=옵션을 지정하라.
Tip : | 저장된 프로그램을 생성하는 경우에 SAS 매크로 변수를 바로 처리 할 것이다. 저장된 프로그램이 사용 될 때까지 매크로 변수 처리를 지연하기 위하여 SYMGET 함수를 사용하라. |
주요기능 : | 예제4 : 컴파일 된 프로그램 저장과 실행 |
11) NOLIST
_ERROR_의 값이 1인 경우에 SAS로그에 모든 변수를 출력하지 않도록 제어한다. NOLIST는 DATA 구문에서 마지막에 지정해야 한다.
제한사항 : | NOLIST는 DATA 구문에서 마지막에 지정되어야 한다. |
3. 상세 설명
SAS 기본 구문 (파일 처리)
4. 범 주
1) DATA 구문 사용하기
데이터 스텝은 DATA 구문으로 시작한다. 다음과 같은 형태의 출력물을 생성하기 위하여 DATA 구문을 사용하라. (SAS 데이터 세트, 데이터 뷰, 저장된 프로그램) DATA 구문에서는 다수의 데이터 세트를 지정 할 수 있다. 그러나, 여러 데이터 세트 중에서 단지 하나의 데이터 세트에 대하여 데이터 뷰를 생성 할 수 있다. VIEW= 옵션 지정으로 VIEW를 생성 할 수 있고, PGM=옵션 지정으로 컴파일 되어 저장된 프로그램을 생성 할 수 있다.
2) 읽기(READ) 암호와 수정(ALTER) 암호 사용하기
만약 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 생성하면서 읽기(READ)와 수정(ALTER) 암호를 함께 지정하였으면 다음 항목이 적용된다.
(1) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 실행하기 위하여 읽기 또는 수정 암호가 필요하다.
(2) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰가 DESCRIBE 구문과 EXECUTE 구문을 모두 포함하면, 읽기 또는 수정 암호가 필요하다.
A) 만약 DESCRIBE 구문과 EXECUTE 구문을 지정하고 동시에 수정(ALTER) 암호를 사용하면, 다음 항목이 적용된다.
- (a) SAS는 DESCRIBE 구문과 EXECUTE 구문을 모두 실행한다.
- (b) 유효하지 않은 수정(ALTER) 암호를 사용하여 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 실행하면,
- DESCRITBE 구문은 실행되지 않는다.
- 배치모드에서, EXECUTE 구문은 영향을 받지 않는다.
- 대화식 모드에서는 읽기(READ) 암호를 입력하도록 입력 창을 표시한다. 만약 입력한 읽기(READ) 암호가 유효하면, SAS는 EXECUTE 구문을 처리한다. 그러나, 입력한 읽기 암호가 유효하지 않으면, SAS는 EXECUTE 구문을 처리 하지 않는다.
B) 만약 DESCRITBE 구문과 EXECUTE 구문을 지정하고 동시에 읽기 암호를 사용하면, 다음 항목이 적용된다.
- (a) 대화식 모드에서, SAS는 수정 암호를 입력하도록 입력 창을 표시한다.
- 유효한 수정 암호를 입력하면, SAS는 DESCRIBE 구문과 EXECUTE 구문을 모두 실행한다.
- 유효하지 않는 수정 암호를 입력하면, SAS는 DESCRIBE 구문은 처리하지 못하고, EXECUTE 구문만 처리한다.
- (b) 배치모드에서, SAS는 EXECUTE 구문은 처리하지만, DESCRIBE 구문은 처리하지 않는다.
- (c) 대화식 모드와 배치 모드 양쪽에서, 유효하지 않은 읽기 암호를 지정하면, EXECUTE 구문은 처리되지 않는다.
(3) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰가 DESCRIBE 구문을 포함하면, 수정 암호가 요구된다.
(4) 컴파일 되어 저장된 데이터 스텝 프로그램 또는 데이터 스텝 뷰를 수정하기 위해서 수정 암호가 요구된다.
3) 출력 데이터 세트 생성
다수의 출력 데이터 세트를 생성하기 위해서 DATA 구문을 사용하자. 개별 출력 데이터 세트마다 다른 데이터 세트 옵션을 적용 할 수 있다. 다음 데이터 세트는 두개(EXAMPLE1 과 EXAMPLE2)의 출력 데이터 세트를 생성한다. EXAMPLE2 데이터 세트를 작성 할 때에 IDnumber 변수를 제거하기 위하여 DROP 옵션을 사용한다.
SAS Statements |
data example1 example2 (drop=IDnumber);
set sample;
. . .more SAS statements. . .
run;
4) 데이터 세트 생성하지 않는 경우
일반적으로, DATA 구문은 출력 데이터 세트를 생성하기 위하여 적어도 하나의 데이터 세트 이름을 지정한다. 그러나, 데이터 스텝이 리포트를 작성하거나, 외부 파일에 데이터 작성이 목적이라면, 출력 데이터 세트 생성이 불필요 할 수 있다. 데이터 세트 이름 대신에 키워드 _NULL_을 사용하면, SAS는 출력 데이터 세트를 생성하지 않고 데이터 스텝을 실행한다. 다음 예제는 개별 관측치에 대하여 Name과 ID 변수의 값을 SAS 로그에 작성하지만, 출력 데이터 세트를 생성하지 않는다.
SAS Statements |
data _NULL_;
set sample;
put Name ID;
run;
5) 데이터 스텝 VIEW 생성
데이터 스텝 뷰를 생성하고 이후에 뷰를 실행 할 수 있다. 다음 데이터 스텝 예제는 데이터 스텝 뷰를 생성하면서, 소스 코드를 암호화하여 저장하기 위하여 SOURCE=ENCRYPT 옵션을 사용한다.
SAS Statements |
data phone_list / view=phone_list (source=encrypt);
set customer_list;
. . .more SAS statements. . .
run;
데이터 스텝 뷰(View)에 대한 상세한 정보는 SAS Language Reference: Concepts 에서 “SAS Data Views” 를 참조하라..
6) 컴파일 되어 저장된 데이터 스텝 프로그램 생성
데이터 스텝 프로그램을 컴파일하여 저장하는 기능은 저장되어 있는 프로그램을 향후에 바로 사용 할 수 있도록 한다. 컴파일 되어 저장된 데이터 스텝 프로그램에 대한 반복적인 사용은 프로그램에 대한 컴파일 과정을 제거하여서 처리 시간을 단축 할 수 있다. 다음 데이터 스텝 예제는 데이터 스텝 프로그램을 컴파일 하고 저장한다. 컴파일 되어 저장된 프로그램이 임의로 수정되는 것을 방지하기 위해서 수정(ALTER)암호를 지정한다.
SAS Statements |
data testfile / pgm=stored.test_program (alter=sales);
set sales_data;
. . .more SAS statements. . .
run;
컴파일 되어 저장된 데이터 스텝 프로그램에 대한 상세한 정보는 SAS Language Reference: Concepts 에서 “Stored Compiled DATA Step Programs”를 참조하라.
7) 데이터 스텝 VIEW 소스 확인
다음 예제는 SAS 로그에 뷰의 소스를 작성하기 위해서 데이터 스텝 VIEW에 DESCRIBE 구문을 사용한다.
SAS Statements |
data view=inventory;
describe;
run;
DESCRIBE 구문에 관한 상세한 정보는 DESCRIBE 구문을 참조하라.
8) 컴파일 되어 저장된(STORED COMPILED) 데이터 스텝 프로그램 실행
다음 예제는 컴파일 되어 저장된 데이터 스텝 프로그램을 실행하는 방법이다. SAS 로그에 소스 코드를 출력하기 위해서 DESCRIBE 구문을 함께 사용한다.
SAS Statements |
libname stored 'SAS library';
data pgm=stored.employee_list;
describe;
execute;
run;
DESCRIBE 구문에 관한 상세한 정보는 DESCRIBE 구문을 참조하고, EXECUTE 구문에 관한 상세한 정보는 EXECUTE 구문을 참조하라.
5. 관련 구문
구문명 | 구문내용 |
DATA 구문 | DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다. |
DESCRIBE 구문 | 컴파일되어 저장된 데이터 세트 프로그램 또는 데이터 스텝 뷰 테이블(View)에 대한 소스 코드를 SAS 로그에 출력한다. |
EXECUTE 구문 | 컴파일되어 저장된 데이터 스텝 프로그램을 실행한다. |
LEAVE 구문 | 현재 반복문의 처리를 중지하고, 반복문 바로 다음에 위치하는 문장을 계속 실행한다. |
LINK 구문 | 프로그램 실행이 지정된 구문 레이블로 바로 이동하여 일련의 SAS 문장을 실행한다. |
데이터 세트 옵션 |
6. 예 제
예제1 : 다중 데이터 파일 생성과 데이터 세트 옵션 사용
다음 DATA 구문은 다중 데이터 세트를 생성하고, 개별 데이터 세트에 대하여 출력되는 항목을 수정한다.
SAS Statements |
data error (keep=subject date weight)
fitness(label='Exercise Study'
rename=(weight=pounds));
ERROR 데이터 세트에는 3개의 변수를 포함하도록 하고, FITNESS 데이터 세트에는 데이터 세트 라벨을 지정하고, WEIGHT 변수 이름을 POUNDS로 변경한다.
예제2 : 데이터 스텝 VIEW 생성
다음 데이터 스텝은 SAS 데이터 파일 대신 데이터 스텝 VIEW를 생성한다.
SAS Statements |
libname ourlib 'SAS-library';
data ourlib.test / view=ourlib.test;
set ourlib.fittest;
tot=sum(of score1-score10);
run;
예제3 : VIEW와 데이터 파일 동시에 생성하기
다음 데이터 스텝은 THEIRLIB.TEST라는 이름의 데이터 스텝 뷰를 생성하고, 추가적으로 SCORETOT라는 임시 SAS 데이터 세트를 생성한다.
SAS Statements |
libname ourlib 'SAS-library-1';
libname theirlib 'SAS-library-2';
data theirlib.test scoretot
/ view=theirlib.test;
set ourlib.fittest;
tot=sum(of score1-score10);
run;
THEIRLIB.TEST VIEW를 이후의 DATA 또는 PROC 스텝에서 처리할 때까지, 데이터 파일 SCORETOT를 생성하지 않는다.
예제4 : 컴파일 된 프로그램 저장과 실행
첫 번째 데이터 스텝은 STORED.SALESFIG 이름의 컴파일 되어 저장된 프로그램을 생성한다.
SAS Statements |
libname in 'SAS-library-1 ';
libname stored 'SAS-library-2 ';
data salesdata / pgm=stored.salesfig;
set in.sales;
qtr1tot=jan+feb+mar;
run;
컴파일 되어 저장된 프로그램 STORED.SALESFIG가 실행 될 때, SALESDATA 데이터 세트를 생성한다.
SAS Statements |
data pgm=stored.salesfig;
run;
예제5 : CUSTOMER 리포트 생성
다음 프로그램에서 두 번째 데이터 스텝은 SAS 데이터 생성하지 않고 고객 리포트를 생성하기 위해서 _NULL_ 키워드를 사용한다.
SAS Statements |
data sales;
input dept : $10. jan feb mar;
datalines;
shoes 4344 3555 2666
housewares 3777 4888 7999
appliances 53111 7122 41333
;
data _null_;
set sales;
qtr1tot=jan+feb+mar;
put 'Total Quarterly Sales: '
qtr1tot dollar12.;
run;
예제6 : 컴파일 되어 저장된 데이터 스텝 프로그램 생성과 동시에 암호 지정하기
첫 번째 데이터 스텝은 STORED.ITEMS 컴파일 되어 저장된 데이터 스텝 프로그램을 생성한다. 이 프로그램은 프로그램 수정에 대한 권한을 관리하기 위한 수정(ALTER) 암호를 지정한다.
SAS Statements |
libname stored 'SAS-library';
data employees / pgm=stored.items (alter=klondike);
set sample;
if TotalItems > 200 then output;
run;
다음 데이터 세트는 컴파일 되어 저장된 데이터 스텝 프로그램 STORED.ITEMS을 실행한다. SAS로그에 소스 코드를 출력하기 위해서 DESCRIE 구문을 사용한다. 프로그램이 ALTER 암호를 지정하여 생성되었기 때문에, DESCRIBE 구문을 사용하기 위해서 수정 암호를 지정해야 한다. 만약 암호를 입력하지 않으면, SAS는 암호를 입력하도록 입력 창을 표시한다.
SAS Statements |
data pgm=stored.items (alter=klondike);
describe;
execute;
run;
예제7 : 중첩 레벨 출력
다음 프로그램은 2개의 DO 구문이 중첩되어 있다. 4개의 로그 메시지가 출력되는데, 각 중첩 레벨(DO 구문)에 대한 시작과 종료 메시지를 출력한다.
SAS Statements |
data _null_ /nesting;
do i = 1 to 10;
do j = 1 to 5;
put i= j=;
end;
end;
run;
Results - Log 출력물 |
6 data _null_ /nesting;
7 do i = 1 to 10;
-
719
NOTE 719-185: *** DO begin level 1 ***.
8 do j = 1 to 5;
-
719
NOTE 719-185: *** DO begin level 2 ***.
9 put i= j=;
10 end;
---
720
NOTE 720-185: *** DO end level 2 ***.
11 end;
---
720
NOTE 720-185: *** DO end level 1 ***.
12 run;
[SAS Statement] SAS 데이터 스텝 구문 사전 목록] |
SAS 함수(SAS Function) 리스트 링크 |
'SAS > SAS 구문사전' 카테고리의 다른 글
【SAS Statement】 DATALINES4 구문 (0) | 2022.01.25 |
---|---|
【SAS Statement】 DATALINES 구문 (0) | 2022.01.25 |
【SAS Statement】 CONTINUE 구문 (0) | 2022.01.25 |
[SAS Statement] Comment(주석) 구문 (0) | 2022.01.25 |
【SAS Statement】 CHECKPOINT EXECUTE_ALWAYS 구문 (0) | 2022.01.25 |
댓글