490 likes | 1.11k Views
SAS 기초. 1. SAS 프로그램 형식 2. SAS 자료 입력 • 저장 3. 데이터세트 명령어 4. 기초적인 프로시저. 1. SAS 프로그램 형식 (1/3). SAS 프로그램의 두 단계 DATA 단계 · 새로운 SAS data set 생성 · 기존 data 를 가공 · 처리하여 새로운 data set 생성 PROC(PROCEDURE) 단계 · SAS data set 자료를 분석하는 단계. 1. SAS 프로그램 형식 (2/3).
E N D
SAS 기초 1. SAS 프로그램 형식 2. SAS 자료 입력•저장 3. 데이터세트 명령어 4. 기초적인 프로시저
1. SAS 프로그램 형식(1/3) SAS 프로그램의 두 단계 DATA 단계 ·새로운 SAS data set 생성 ·기존 data를 가공 ·처리하여 새로운 data set 생성 PROC(PROCEDURE) 단계 · SAS data set 자료를 분석하는 단계
1. SAS 프로그램 형식(2/3) SAS 프로그램 시 유의사항 ▪ 한 명령문은 중심어로 시작하고 반드시 세미콜론(;)으로 끝낸다. ▪ 대문자, 소문자 구별이 없다. ▪ 한 문장을 여러 줄에 사용 가능하다. ▪ 여러 문장을 한 줄에 작성 가능하다. 이 때 문장과 문장 사이는 반드시 세미콜론(;) 사용한다. 중심어(keyword) 인자(parameter) …. 선택사항(option) ;
1. SAS 프로그램 형식(3/3) 중심어 변수(인자)이름 ▪ 첫 문자는 알파벳(A∼Z)이나 밑줄(_)로 시작하고, 두 번째 문자는 알파벳, 숫자, 밑줄 모두 사용 가능. ▪ SAS 내부에서 정한 예약어를 쓸 수 없다. DATA, INPUT, INFILE, FILE, CARDS, PROC, RUN …
2. SAS 자료 입력•저장(1/12) 1 SAS library 만들기 메뉴 방식
2. SAS 자료 입력•저장(2/12) 프로그램 방식(라이브러리 생성) LIBNAME 라이브러리이름 ‘디렉토리경로명 ’; [예제 4.1] LIBNAME STAT 'c:\SAMPLE'; data STAT.a; input gender $ age score @@; cards; m 40 90 f 51 89 f 38 88 ; run;
2. SAS 자료 입력•저장(3/12) 2 EXCEL 파일 읽기와 저장 EXCEL 파일 읽기 - 메뉴 방식 파일 → 데이터 가져오기
2. SAS 자료 입력•저장(4/12) EXCEL 파일로 저장 - 메뉴 방식 파일 → 데이터 내보내기
2. SAS 자료 입력•저장(5/12) EXCEL 파일 읽기 –프로그램 방식 PROCIMPORTOUT = msyun.aa DATAFILE ="C:\sample\sample1.xls" DBMS = EXCEL2000 REPLACE; RANGE = “SHEET1$”; GETNAMES =YES ; RUN;
2. SAS 자료 입력•저장(6/12) EXCEL 파일로 저장 –프로그램 방식 PROCEXPORTOUT = msyun.bb OUTFILE ="C:\sample\sample2.xls" DBMS = EXCEL2000 REPLACE; RUN;
2. SAS 자료 입력•저장(7/12) 3 텍스트 파일 읽기 텍스트 파일 읽기 - 메뉴 방식 파일 → 데이터 가져오기
2. SAS 자료 입력•저장(8/12) 텍스트 파일 읽기 - 프로그램 방식 DATA ms; INFILE ‘c:\msyun\sample2.dat’; INPUT a b c; RUN;
2. SAS 자료 입력•저장(9/12) 4 SAS에서 직접 자료 입력 4.1 DATA 문 (데이터세트의 형성) [예제4.2] DATA sample (KEEP=age); RUN; [예제4.3] DATA sample (DROP=age); RUN; DATA 선택사항 ;
2. SAS 자료 입력•저장(10/12) [예제4.4] DATA sample1; SET sample; KEEP age ; RUN; [예제4.5] DATA sample1; SET sample; DROP age ; RUN;
2. SAS 자료 입력•저장(11/12) 4.2 INPUT문 (자료의 입력 및 변수의 지정) 자유형식(free format) INPUT문 고정 입력 방식(fixed format) INPUT문 INPUT variables $ INPUT variables $ 시작열(col.) –끝열(col.)
2. SAS 자료 입력•저장(12/12) 4.3 CARDS문 (프로그램 내에서 자료 입력) [예제 4.6] DATA x; INPUT gender $ age score @@; CARDS; m 40 90 f 51 89 f 38 88 ; RUN;
3. 데이터세트를 이용하는 명령어 3.1 산술 할당문 새로운 변수 = SAS식 [예제 3.1] DATA A; SET SAMPLE; TOT1 = hgt + wgt ; TOT2 = TOT1 + food ; RUN; ▶ 산술 할당문의 위치 : INPUT문 뒤 or SET문 뒤
3. 데이터세트를 이용하는 명령어 연산자 ▪ 산술 연산자 • +(더하기) • -(빼기) • *(곱하기) • /(나누기) • **(지수) ▪ 비교 연산자 • = or EQ(같다) • ^= or NE(같지 않다) • > or GT(크다) • < or LT(작다) • >= or GE(크거나 같다) • <= or LE(작거나 같다)
3. 데이터세트를 이용하는 명령어 [예3.2] x1=log(x); y=b/a ; y=a*(c+3) ; [예3.3] DATA kim; INPUT a b; c=(a**2)+b;
3. 데이터세트를 이용하는 명령어 SAS에서 이용되는 함수 ▪ 산술함수 • ABS(절대값), SIGN(부호) • MAX(최대값), M IN(최소값) ▪ 절단함수 • INT(소수점 이하를 절단) • ROUND(지정된 자리에서 반올림)
3. 데이터세트를 이용하는 명령어 ▪ 표본통계량함수 • MAX, MIN • MEAN (평균) • SUM (합) • VAR (분산) • STD (표준편차) • STDERR (표준오차)
3. 데이터세트를 이용하는 명령어 ▪ 특수함수 • LAG (지체된 함수) • DIF (현재 값과 지체된 값의 차이) => DIFn(x)=x-LAGn(x)
3. 데이터세트를 이용하는 명령어 [예제 3.4] DATA A; SET B; average=MEAN (X1, X2, X3); or MEAN(OF X1-X3); RUN; [예제 3.5] x=ROUND(123.456,1); y=ROUND(123.456, 100); z=ROUND(123.456, 0.01); w=INT(123.456);
3. 데이터세트를 이용하는 명령어 [예제 3.6] DATA lag_test; INPUT x; y=LAG1(x); z=LAG2(x); datalines; 1 4 3 5 2 RUN; [결과]
3. 데이터세트를 이용하는 명령어 [예제 3.7] DATA diff_test; INPUT x; v=DIF1(x); w=DIF2(x); datalines; 1 4 3 5 2 RUN; [결과]
3. 데이터세트를 이용하는 명령어 3.2 IF문 (조건문) • IF SAS식 ; • IF SAS식 THEN 명령문; • IF SAS식 THEN 명령문; ELSE 명령문; • 4. IF SAS식 THEN 명령문 ; • ELSE IF SAS 식 THEN 명령문; • ELSE 명령문;
3. 데이터세트를 이용하는 명령어 [예3.8] IF gender=. THEN delete; [예3.9] IF ave <= 120 THEN strata=1; ELSE IF 120 < ave <= 125 THEN strata=2; ELSE strata=3;
3. 데이터세트를 이용하는 명령어 3.3 SET문 변수의 복사 [예제5.10] DATA new; SET old; RUN;
3. 데이터세트를 이용하는 명령어 변수의 부분 선택과 연산 [예제3.11] DATA new1; SET old; KEEP(DROP) age ; RUN; [예제 3.12] DATA new2; SET old; total=hgt+wgt; RUN;
3. 데이터세트를 이용하는 명령어 둘 이상의 SAS 자료를 변수를 기준으로 결합 [예제 3.13] <data new> name gender Sung M Park F Kim M Lee F Moon F Yoon M Oh M Jang F <data a1> name gender Sung M Park F Kim M Lee F <data a2> name gender Moon F Yoon M Oh M Jang F + ⇒ DATA new; SET a1 a2; RUN;
3. 데이터세트를 이용하는 명령어 3.4 MERGE문 둘 이상의 SAS 자료를 관측치를 기준으로 병합 [예제 3.14] <data a3> Color Purple Silver Pearl Red <data a1> name Sung Park Kim Lee <data a2> year make model 1993 Kia Sephia 2005 Hyundai Sonata 2001 Kia Optima
3. 데이터세트를 이용하는 명령어 <data new> name year make $ model $ Color $ Sung 1993 Kia Sephia Purple Park 2005 Hyundai Sonata Silver Kim 2001 Kia Optima Pearl Lee . . . Red DATA new; MERGE a1 a2 a3; RUN;
3. 데이터세트를 이용하는 명령어 [예제 3.15] <data a1> Name year make model Sung 1993 Kia Sephia Park 2005 Hyundai Sonata Kim 2001 Kia Optima <data a2> Name Color Park Purple Yoon Silver Kim Pearl Sung Red <data new> Name year make model Color Sung 1993 Kia Sephia Red Park 2005 Hyundai Sonata Purple Kim 2001 Kia Optima Pearl Yoon . . . Silver
3. 데이터세트를 이용하는 명령어 PROC SORT data=a1; BY name; RUN; PROC SORT data=a2; BY name; RUN; DATA new; MERGE a1 a2 ; RUN; ▶ 반드시 sort 후에 MERGE 할 것!
3. 데이터세트를 이용하는 명령어 3.5 RETAIN 문 방금 읽은 값을 계속 유지하게 하는 명령어로 실행문이 아니라 선언문으로 LAG1과 같은 역할을 한다. RETAIN 변수 ;
3. 데이터세트를 이용하는 명령어 동일한 관측이 겹쳐진 자료의 제거 [예제3.16] DATA phone; INPUT name $ area $ number @@; CARDS; Sung 02 4169679 Moon 02 7976155 Oh 0341 876322 Ketel 02 3122868 Moon 02 7976155 Sung 02 4169679 RUN; (계속)
3. 데이터세트를 이용하는 명령어 PROC SORT; by name; RUN; DATA phone1; SET phone; RETAIN oldname; IF oldname=name THEN delete; oldname=name; RUN;
4. 기초적인 프로시저 PROC PRINT PROC SORT PROC MEANS PROC SUMMARY PROC UNIVARIATE PROC FREQ PROC ttest
4. 기초적인 프로시저 4.1 PROC PRINT (자료의 출력) PROC PRINT [data=dsn] [선택사항] ; var 변수명; by 변수명; run;
4. 기초적인 프로시저 4.2 PROC SORT (자료의 정렬) PROC SORT [data=dsn] [out=dsn] [선택사항] ; by [descending] 변수명; run;
4. 기초적인 프로시저 4.3 PROC MEANS (평균과 관련된 통계량) PROC MEANS [data=dsn] [선택사항] ; var 변수명; class 변수명; output out=[dsn] keyword=[name]; RUN; PROC PRINT data=[dsn]; RUN;
4. 기초적인 프로시저 [예제4.1] PROC MEANS data=a n mean std sum; VAR hgt wgt ; OUTPUT out=b mean=mean1 mean2; RUN; PROC PRINT data=bb; RUN;
4. 기초적인 프로시저 [예제4.2] proc means data=testdata1; class gender; var height weight bmi; run; proc sort data=testdata1; by gender; run; PROC PRINT data=testdata1; RUN;
4. 기초적인 프로시저 4.4 PROC SUMMARY (자료의 요약) PROC SUMMARY [data=dsn] [선택사항] ; var 변수명; class 변수명; output out=[dsn] keyword=[name]; run;
4. 기초적인 프로시저 [예제4.2] PROC SUMMARY data=b ; CLASS gender ; VAR age score ; OUTPUT OUT=bb mean=mean1 mean2; RUN; PROC PRINT data=bb; RUN;
4. 기초적인 프로시저 4.5 PROC UNIVARIATE (분포와 통계량) PROC UNIVARIATE [data=dsn] [선택사항] ; var 변수명; output out=[dsn] keyword=[name]; run;
4. 기초적인 프로시저 4.6 PROC FREQ (도수분포표 및 분할표) PROC FREQ [data=dsn] [선택사항] ; tables 변수명*변수명; weight 변수명; run;
4. 기초적인 프로시저 [예제4.3] PROC FREQ data=b ; TABLES gender ; RUN; [예제4.4] PROC FREQ; TABLES gender*strata ; RUN; [예제4.5] PROC FREQ; TABLES x1-x30 ; RUN; [예제4.6] PROC FREQ; TABLES a*(b c) ; RUN;
proc plot – scatter plot proc plot data=readin1; title ‘scatter plot of accept rate and grad rate’; plot accept_rate*graduate_rate; run;