SAS를 이용한 통계자료분석

Similar documents
슬라이드 1

Orcad Capture 9.x

Microsoft Word - FunctionCall

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

강의10

Microsoft Word - SAS_Data Manipulate.docx

Modern Javascript

PRO1_09E [읽기 전용]

쉽게 풀어쓴 C 프로그래밍

13주-14주proc.PDF

Microsoft PowerPoint - additional01.ppt [호환 모드]

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

USER GUIDE

C# Programming Guide - Types

s SINUMERIK 840C Service and User Manual DATA SAVING & LOADING & & /

PRO1_02E [읽기 전용]

untitled

MPLAB C18 C

DocsPin_Korean.pages

Microsoft Word - ExecutionStack

SRC PLUS 제어기 MANUAL

歯엑셀모델링

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

歯sql_tuning2

Microsoft PowerPoint - a10.ppt [호환 모드]

DIY 챗봇 - LangCon

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

SIGPLwinterschool2012

김기남_ATDC2016_160620_[키노트].key

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Javascript.pages

게시판 스팸 실시간 차단 시스템

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

PowerPoint Presentation

Observational Determinism for Concurrent Program Security

PHP & ASP

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

슬라이드 1

컴파일러

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

금오공대 컴퓨터공학전공 강의자료

Interstage5 SOAP서비스 설정 가이드

PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

untitled

Microsoft PowerPoint - [2009] 02.pptx

17장 클래스와 메소드

MySQL-.. 1

Microsoft PowerPoint - e pptx

Microsoft PowerPoint 세션.ppt

T100MD+

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

중간고사

10.ppt

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

윈도우즈프로그래밍(1)

Microsoft PowerPoint - chap10-함수의활용.pptx

MS-SQL SERVER 대비 기능

(2) : :, α. α (3)., (3). α α (4) (4). (3). (1) (2) Antoine. (5) (6) 80, α =181.08kPa, =47.38kPa.. Figure 1.


Tcl의 문법

별지 제10호 서식

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

CD-RW_Advanced.PDF

PowerPoint Template

C++-¿Ïº®Çؼ³10Àå

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

rmi_박준용_final.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

(SW3704) Gingerbread Source Build & Working Guide

DDX4038BT DDX4038BTM DDX4038 DDX4038M 2010 Kenwood Corporation All Rights Reserved. LVT A (MN)

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

C++ Programming

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

Something that can be seen, touched or otherwise sensed

Remote UI Guide

(JBE Vol. 21, No. 1, January 2016) (Regular Paper) 21 1, (JBE Vol. 21, No. 1, January 2016) ISSN 228

Microsoft Word - ASG AT90CAN128 모듈.doc

을 할 때, 결국 여러 가지 단어를 넣어서 모두 찾아야 한다는 것이다. 그 러나 가능한 모든 용어 표현을 상상하기가 쉽지 않고, 또 모두 찾기도 어 렵다. 용어를 표준화하여 한 가지 표현만 쓰도록 하여야 한다고 하지만, 말은 쉬워도 모든 표준화된 용어를 일일이 외우기는

PRO1_16E [읽기 전용]

Contents Activity Define Real s Activity Define Reports UI, and Storyboards Activity Refine System Architecture Activity Defin


<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

ETL_project_best_practice1.ppt

[INPUT] 뒤에는변수와관련된정보를표기한다. [CARDS;] 뒤에는각각의변수가가지는관측값들을표기한다. >> 위의프로그램에서데이터셋명은 wghtclub 이고, 변수는 idno, name, team, strtwght, endwght 이다. 이중 name 과 team 은

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

JMF2_심빈구.PDF

Transcription:

MACRO 5 강

SAS 매크로개요 매크로 - SAS 시스템에서는 SAS 의활용도를높이고일상적인프로그램작성작업의효율성을높이기위해서매크로기능 (MACRO FACILITY) 을제공하고있다. 매크로기능 - 매크로기능은사용자가작성해야하는프로그램의양을줄이고 SAS 언어의활용도를높여주는강력한프로그램작성도구라고할수있는데프로그램의양이많든적든간에한번에실행하고싶은내용을간단히하나의단위로만들어필요할때마다프로그램내에서호출하여사용할수있다. 매크로기능은매크로언어 (MACRO LANGUAGE) 와매크로처리기 (MACRO PROCESSOR) 를포함하는개념이다. 매크로처리기 - 실제로작업을수행하는 SAS 시스템의일부로서매크로언어로작성된프로그램이 SAS 시스템에서제대로수행되게한다. 매크로언어 - 매크로처리기와의사소통을할수있게해주는프로그램언어로서매크로변수 (VARIABLE), 프로그램문장 (PROGRAM STATEMENT), 연산식 (EXPRESSION) 및함수 (FUNCTION) 로이루어진다. 2

매크로언어의목적 프로그램작성작업의간소화 ( 단순반복적인 SAS 코드의생성 ) EX) %macro prt(dsn); proc print data=&dsn; run; %mend prt; %prt(sashelp.class) SAS 시스템정보의추출 - 자동매크로변수를이용하여시스템정보를추출할수있다. %put sysdate is &sysdate; => sysdate is 06FEB98 (LOG 창 ) 3

SAS Processing 일반 SAS도프로그램 1 SAS 프로그램컴파일 2 실행 Macro 프로그램 1 Macro processor가 Macro 구문을일반 SAS 프로그램으로변환 2 프로그램컴파일 3 실행 4

Macro Processing 5

MACRO / MACRO variable Macro variable 1 %(percent) 로시작한다. 2 주로변수이름을나타낸다. 3 Local( 지역 ) macro variable : macro안에서선언, macro안에서만사용가능 4 global( 광역 ) macro variable : macro밖에서선언, 모든 sas program에서사용가능 5 숫자변수, 문자변수구분없이, 항상문자열로처리됨. 6 Macro Variable 의종류는두가지가있음 (i) AUTO Variables (ii) 사용자정의 Variables 6

AUTO Variables 사용자가별도로정의하지않아도 SAS 제어기또는시스템에의해서자동으로생성되는 Macro Variable 를의미. %PUT _AUTOMATIC_; 자동변수, 사용자정의변수를모두보여준다 이 름 기 능 SYSDATE 시스템의현재날짜 : 25JAN97 SYSDAY 시스템의현재요일 : Thursday SYSTIME 시스템의현재시간 : 10:45 SYSENV 실행모드 : fore,back SYSSCP 운영체제 : os,cms,dos,window,unix,mvs SYSVER SAS 시스템의버전 : 6.08, 6.11, 6.2 SYSJOBID SAS시스템을실행한사용자의 ID: sasdev SYSERR 마지막으로실행된 DATA/PROC스텝의리턴코드 : 0 SYSRC 마지막으로실행된운영체제명령어의리턴코드 : 0 SYSLIBRC 마지막으로실행된 LIBNAME문의리턴코드 : 0 7

사용자정의 Macro Variables Macro variable 생성 : %LET macro-variable-name = value; ( 예 ) %LET iterations = 10; %LET country = New Zealand; /* SAS문자변수와달리 가없다. */ Macro variable 사용 : & macro-variable ( 예 ) DO = i TO &iterations; TITLE Addresses in &country ; macro processor는위구문을다음과같이변환한다 : DO = i TO 10; TITLE Addresses in New Zealand ; 8

value : 문자값으로그대로저장. ( 해당매크로변수가호출되어졌을때, TYPE 이정해짐 ) 수학적식이계산되지않음. ( 예 ) %let total = 3+4; %put &total; => 3+4 사용자가 %LET 문을사용하여정의 %PUT _USER_ ; 선언한매크로변수와값을 Display 됨. ( 예 ) %Let Code = A B C D; %Let Desc = 100 200 300 400; %put _USER_; /* GLOBAL & LOCAL 사용자변수목록을출력 */ %put _GLOBAL_; /* GLOBAL 사용자변수목록을출력 */ %put _LOCAL_; /* LOCAL 사용자변수목록을출력 */ 9

DATA flowersales; LENGTH Variety $9; INPUT CustomerID $ SaleDate MMDDYY10. Variety $ Quantity @@; IF Variety = "&flowertype"; CARDS; 240W 02-07-2008 Ginger 120 240W 02-07-2008 Protea 180 356W 02-08-2008 Heliconia 60 356W 02-08-2008 Anthurium 300 188R 02-11-2008 Ginger 24 188R 02-11-2008 Anthurium 24 240W 02-12-2008 Heliconia 48 240W 02-12-2008 Protea 48 356W 02-12-2008 Ginger 240 10

%LET flowertype=ginger; /* Global macro variable */ DATA flowersales2; SET flowersales; IF Variety = "&flowertype"; PROC PRINT DATA = flowersales2; FORMAT SaleDate WORDDATE18.; TITLE "Sales of &flowertype"; 11

Macro 기본프로그래밍 %MACRO macro-name; * 매크로함수정의 ; %MEND; macro-text; - Macro 는기본적으로 Macro 를만드는부분과호출하는부분두개의구조로이루어짐 - Macro 는호출되어지기전에미리수행되고, 한번수행된것은반복해서사용가능 - %macro-name ; * 매크로함수호출 ; %MACRO mshow(lib, data); PROC PRINT data=&lib..&data; %MEND; %mshow(sashelp, class); 12

Macro Parameter %MACRO macro-name (Parameter list); * 매크로함수정의 ; %MEND ; text referencing parameter variables %macro-name(parameter value) ; * 매크로함수호출 ; - Macro 에서 Parameter 사용가능 %MACRO printdsn(dsn, vars); PROC PRINT DATA = &dsn; VAR &vars; title "Listing of %upcase(&dsn) data set"; %MEND; %printdsn(sashelp.class, name sex height weight); Macro Parameter 는 Local Symbol Table 에저장이되는데위의 DSN, VARS 의 Value 들이저장이되고 Macro 호출시에 Value 을참조. 13

DATA flowersales; LENGTH Variety $9; INPUT CustomerID $ SaleDate MMDDYY10. Variety $ Quantity @@; IF Variety = "&flowertype"; CARDS; 240W 02-07-2008 Ginger 120 240W 02-07-2008 Protea 180 356W 02-08-2008 Heliconia 60 356W 02-08-2008 Anthurium 300 188R 02-11-2008 Ginger 24 188R 02-11-2008 Anthurium 24 240W 02-12-2008 Heliconia 48 240W 02-12-2008 Protea 48 356W 02-12-2008 Ginger 240 %MACRO sample; PROC PRINT DATA = flowersales (OBS=5); FORMAT SaleDate WORDDATE18.; %MEND sample; %sample /* %LET을이용하면구문의일부변수를변경하여반복할수있다!!*/ 14

%MACRO select(customer=,sortvar=); PROC SORT DATA = flowersales OUT=salesout; BY &sortvar; WHERE CustomerID= "&CUSTOMER"; PROC PRINT DATA=salesout; TITLE "Orders for customer number &customer"; %MEND select; %select(customer = 356W, sortvar=quantity) %select(customer = 240W, sortvar=variety) 15

Macro Macro구문에 PARAMETER 넣기 : 유사한구문을반복해서사용할때 /* MACRO 구문선언 */ %MACRO macro-name (parameter-1=, parameter-2=, ); macro-text; %MEND macro-name; ( 예 ) %MACRO quarterlyreport (quarter=, salesrep=); Macro 호출 : %macro-name(parameter-1=a, parameter-2=b, ); ( 예 ) quarterlyreport(quarter=3, salesrep=smith) 16

매크로반복문 (%Do %END) %DO index-variable = start %TO stop %BY increment; text %END ; %MACRO roman(ds, start, stop, incr); data &ds; %DO i = &start %TO &stop %BY &incr; value = &i; output; %END; run; %MEND roman; %roman(roman, 1, 3, 1); 17

Macro 조건문 %IF %Then 1) %IF %THEN / %ELSE - %IF expression! %THEN text ; <%ELSE text ;> 2) %IF %THEN %DO%END / %ELSE %DO%END - %IF expression! %THEN %DO ; statement; statement;... %END; %ELSE %DO; statement; statement;... %END; %MACRO printit; %IF &syslast NE _NULL_ %THEN %DO; PROC PRINT data = _last_(obs=5); %END; %MEND; %printit; /*&syslast 는이전 DATA명 */ 18

%MACRO dailyreports; %IF &SYSDAY = MONDAY %THEN %DO; PROC PRINT DATA = flowersales; %END; %ELSE %IF &SYSDAY = Tuesday %THEN %DO; PROC MEANS DATA = flowersales MEAN MIN MAX; VAR quantity; %END; %MEND dailyreports; %dailyreports 19

CALL SYMPUT CALL SYMPUT( macro-variable, text ); CALL SYMPUT( macro-variable, DATA-Step-variable); CALL SYMPUT( macro-variable, expression!); -DATA Step 에서의 Macro Variable 생성하는것 DATA dusty; INPUT dept $ name $ salary @@; CARDS; bedding Watlee 18000 bedding Ives 16000 carpet Ray 12000 carpet Jones 9000 gifts Johnston 8000 gifts Matthew 19000 kitchen Marks 9000 kitchen Cannon 15000 tv Jones 9000 tv Smith 8000 tv Rogers 15000 tv Morse 16000 RUN ; 20

CALL SYMPUT PROC MEANS NOPRINT; CLASS dept; VAR salary; OUTPUT OUT=stats SUM=s_sal; DATA _NULL_; SET stats; IF _N_=1 THEN CALL SYMPUT('s_tot', trim(left(s_sal))); ELSE CALL SYMPUT('s' dept, trim(left(s_sal))); /* 여기서 는문자열접합 */ %put _user_; 21

CALL SYMPUT DATA _NULL_; SET flowersales; IF _N_=1 THEN CALL SYMPUT("selcustomer", customerid); ELSE STOP; PROC PRINT DATA = flowersales; WHERE CustomerID = "&selcustomer"; TITLE "customer &selcustomer had the single largest order"; 22

The %INCLUDE Statement External File 을호출하여실행시키는문장. /* external.sas 파일 */ DATA newclass; SET sashelp.class; newweight=weight*&tweight; /* SAS 코드 */ %LET tweight=1.1; %INCLUDE 'c:\external.sas' /SOURCE2; PROC PRINT; /*SOURCE2 라는옵션을붙이면 SAS Log 에소스가 Display 됩니다.*/ 23

Macro Functions %UPCASE %LOWCASE %SUBSTR %SCAN %LENGTH %SYSFUNC 24

%UPCASE 와 LOWCASE %UPCASE(argument); /* Argument 를대문자로변환하고자할때 */ %LOWCASE(argument); /* Argument 를소문자로변환하고자할때 */ %LET namevar=alfred; DATA class; SET sashelp.class; WHERE upcase(name) = "%UPCASE(&namevar)"; 25

%SUBSTR %SUBSTR(argument, position<,n>); /* 문자열중에일부만가져오고자할때 */ PROC PRINT DATA=sashelp.class; TITLE "Report Date : %SUBSTR(&sysday,1,3) &sysdate"; 26

%SCAN %SCAN(argument, n, <delimiters>); /*n 번째문자를가져오고자할때 */ Delimiters 의디폴트값 : blank. < ( + &! $ * ) ; ^ - /, % %LET deli=abc*def*gh; %PUT %SCAN(&deli, 1, *); /* 구분자를 * 로한다 */ 27

%INDEX %SCAN(argument1, argument1); /*searches the first argument (ARGUMENT1) for the first occurrence of the text string which is contained in the second argument (ARGUMENT2).*/ %LET X=LONG TALL SALLY; %LET Y=%INDEX(&X,TALL); %PUT TALL CAN BE FOUND AT POSITION &Y; 28

%LENGTH %LENGTH(argument); /* 매크로변수가몇개의글자로이루어졌는지알고자할때 */ %LET M1 = KOREA TEAM FIGHTING; %LET M2 = WORLD BASEBALL CLASSIC; %PUT %LENGTH(&M1); /* 로그창에 19출력 */ %PUT %LENGTH(&M2); /* 로그창에 22출력 */ 29

%SYSFUNC %SYSFUNC(function(argument(s))<,format>); - Macro 에서 SAS Function 을 Macro Function 처럼이용 - 모든 SAS Functions 들이 %sysfunc 를사용할수는없음 ex) DIF, DIM, HBOUND, IORCMSG, INPUT, LAG, LBOUND, MISSING, PUT, etc %LET fmttime = %SYSFUNC(time(), timeampm14.2); %LET fmt2 = %SYSFUNC(time(), time5.); %LET currdate = %SYSFUNC(today(), worddate.); DATA _NULL_; PUT "today's date: &currdate"; PUT "systime is : &systime = when SAS started"; PUT "using sysfunc, time is : &fmttime"; PUT "another format for time is &fmt2"; 30