안녕하세요
이번 게시글은 기초 SAS 문법 / 명령문 관련된 글 입니다.
1. library
파일시스템 경로에 별칭을 부여한 것으로 SAS 파일의 저장장소입니다.
라이브러리를 등록해 두면 SAS 내에서 특정 폴더를 지칭하여 바로 사용할 수 있어 편리합니다 .
< 종류 >
- 1). 시스템 정의 라이브러리와 사용자 정의 라이브러리
시스템 정의 라이브러리 : SAS를 설치 시에 자동적으로 생성되는 라이브러리로
SASHELP, SASUSER, WORK, MAPS 등이 있습니다.
사용자 정의 라이브러리 : SAS 사용자가 생성하는 라이브러리 입니다.
- 2). 임시 라이브러리와 영구 라이브러리
WORK : SAS를 종료함녀 라이브러리 내에서 자동으로 삭제.
WORk 이외의 라이브러리 : SAS 종료 후에도 라이브러리 내에서 자료가 보존
< SAS 파일 사용법 > - 라이브러리명.SAS파일명
모든 SAS 파일은 2 - 레벨 이름으로 사용됩니다.
ex) Proc Print Data = SASUSER.dataset1 Run;
하지만, WORK 라이브러리를 사용할 경우 생략이 가능.
2. Import / Export
SAS와 외부 데이터를 공유하는 명령어.
Import Wizard, Export Wizard 를 이용하여 다양한 형태의 외부 데이터를 공유할 수 있습니다.
< Wizard 이용하는 방법 >
1) '파일 > 데이터 가져오기' Import Wizard 열기
2) 원하는 데이터 형식 선택 > Next
3) Option 변경
4) 저장될 라이브러리와 SAS-data-set 이름 지정 후 Finish
5) Export Wizard는 반대로 sas-data-set을 외부 데이터로 저장 가능
< Proc Import 문법 >
proc import out=work.exam
datafile=“c:\...\exam.xls’
dbms=excel replace;
sheet=“sheet1$”;
getnames=yes;
mixed=no;
scantext=yes;
scantime=yes;
run;
1) proc import : 저장될 sas data set 지정
2) datafile : 가져올 data의 위치
3) dbms : 가져올 외부 data의 포맷을 지정 ( sheet, getnames, mixed, scantext, scantime으로 다양한 옵션을 지정할 수 있습니다. )
< Proc Export 문법 >
proc export out=work.test
outfile=“c:\...\text.xls’
dbms=excel replace;
sheet=“test”;
run;
1) proc export : 내보낼 sas data set 지정.
2) outfile : 내보낼 data의 위치
3) dbms : 내보낼 data의 포맷 지정
3. Infile/File
외부 파일을 읽어 오거나 SAS 데이터 셋을 외부 파일로 출력합니다.
Text 형식의 raw data를 읽어올 때는 data의 길이나 위치에 따라 특별한 정의가 필요한 경우 사용합니다.
< Infile >
Input 문장에서 읽을 raw data file 의 이름을 명시합니다.
'Infile' 키워드 옆에 따옴표 안에 읽어 올 외부 팡일의 경로 또는 파일명을 기술합니다.
< Input >
Infile 문장에서 지정한 외부 파일을 읽어올 방식을 지정하는 문장입니다. 외부파일의 데이터 값을 어떻게 읽어와서 어떤 변수에 저장할 것인지를 지정합니다.
data work.staff;
infile ‘test-file-location’;
input empid $ 1-4 lastname $ 5-17
firstname $ 18-30 salary 37-45;
run;
< File 문장 >
Put 문장에서 출력할 raw data file의 이름을 명시합니다. file 키워드 옆에 있느 ㄴ따옴표 안에 출력할 외부 파일의 경로 또는 파일명을 기술합니다.
< Put 문장 >
file 문장에서 지정한 외부 파일로 출력할 방식을 지정하는 문장으로 SAS 데이터 셋을 읽어서 외부 파일의 어떤 변수에 저장할 것인지를 지정합니다.
data _null_;
set work.staff;
file ‘test-file-location’;
put empid $ 1-4 lastname $ 5-17
firstname $ 18-30 salary 37-45;
run;
4. Proc SQL
sas 시스템에서 SQL (structured Query Language)를 사용하기 위한 프로시저로 data step이나 다양한 함수뿐 아니라 SQL을 사용하기 위한 프로시져도 제공합니다.
< SQL Procedure >
PROC SQL <options> ;
SELECT expression;
INSERT expression;
UPDATE expression;
DELETE expression;
CREATE expression;
DROP expression;
ALTER expression;
DESCRIBE expression;
- SELECT : 조회할 칼럼 선택
- INSERT : 테이블 속성과 뷰 정의 내용을 조회
- UPDATE : 테이블(또는 뷰)의 특정 행의 칼럼 값을 수정
- DELETE : 테이블(또는 뷰)에서 특정 행 삭제
- CREATE : 테이블, 뷰, 인덱스 생성
- DROP : 테이블, 뷰, 인덱스 삭제
- ALTER : 테이블에서 칼럼의 추가, 삭제, 속성 변경
- DESCRIBE : 테이블 속성과 뷰 정의 내용을 조회
< Select >
SELECT column-1<, column-2>...
FROM table-1|view-1<, table-2|view-2>...
<WHERE expression>
<GROUP BY column-1<, column-2>…>
<HAVING expression>
<ORDER BY column-1<, column-2>… <DESC>>;
5. MACRO
반복적으로 사용하는 변수나 프로그램을 생성하는 매우 강력한 도구로 반복 작업 또는 사용자가 지정한 정보에 따라 고정된 작업을 수행하는 상황 등에 자주 쓰입니다.
< 매크로 변수 >
%LET 문장: 매크로 변수를 생성하고 매크로 변수에 값을 저장하기 위해 사용함
%LET variable=value ;
생성되어 있는 매크로 변수에 저장되어 있는 값을 가져올 때는 매크로 변수 앞에 & 기호를 사용합니다.
ex)
1.
%LET test=sashelp.class;
PROC PRINT data=&test;
RUN;
2.
PROC PRINT data=sashelp.class;
RUN;
예시 1번과 2번의 경우 두개 다 같은 결과를 가져옵니다.
< 매크로 정의와 호출 >
1. 정의와 호출
%MACRO macro-name;
macro-text
%MEND <macro-name>;
%macro-name
macro-text는 어떠한 문자도 입력할 수 있고, sas 문장으로 매크로 변수를 참조하거나 매크로 함수와 매크로 문장을 호출을 할 수 있습니다.
macro-name은 SAS 변수 명명 규칙을 따르도록 지정되어 있습니다.
2. 정의와 호출
%macro class;
PROC PRINT data=sashelp.class;
RUN;
%mend class;
%class
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.