일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- kaggle
- Cook'sdistance
- 마케팅조사
- rstudent
- 회귀모델
- 마케팅
- teachablemachine
- 마케터
- 마케팅공부
- 모형진단
- 할당문
- 머신러닝
- r
- SQL
- rstandard
- SAS
- 프로그래밍
- DOEND
- 회귀분석
- infile
- 회귀분석실습
- 캐글
- 본페로니
- DIFFITS
- 포지셔닝맵
- 데이터청년캠퍼스
- format
- SAS반복문
- 데이터결합
- sasviya
- Today
- Total
통수정의 성장기
SAS_데이터 가공 및 처리[OUT,RANK,STANDARD,SORT,PRINT,FORMAT,CONTENTS] 본문
SAS_데이터 가공 및 처리[OUT,RANK,STANDARD,SORT,PRINT,FORMAT,CONTENTS]
jinijinhee 2022. 6. 21. 22:03<목차>
- OUT 데이터 셋의 이용
- 순위의 계산 : RANK 프로시저
- 표준화 : STANDARD 프로시저
- 데이터셋의 정렬 : SORT 프로시저
- 데이터셋의 출력 : PRINT 프로시저
- 사용자 출력 포맷의 작성 : FORMAT프로시저
- 개체와 변수의 자리바꿈 : TRANSPOSE프로시저
- 데이터셋의 관리 : CONTENTS 프로시저
- 출력결과 및 로그의 저장 : PRINTO 프로시저
OUT 데이터 셋의 이용
PROC MEANS DATA=mysas.htwt NOPRINT;
CLASS gender dept;
VAR age height weight;
OUTPUT OUT=mysas.htwt_m1
MEAN(age height weight)=mean_a mean_h mean_w
SUM(age height weight)=sum_a sum_h sum_w;
RUN;
CLASS변수 sex와 dept 자료의 값에 따른 변수 age, height, weigh의 평균을 계산
OUTPUT 명령문에 의해 이 평균값들로 구성된 새로운 데이터셋 mean_out을 생성
새로운 데이터셋의 이름은 OUT=옵션으로 지정하며, 저장하고자 하는 통계량을 statistickeyword= 형태로 지정 (UNIVARIATE 또는 SUMMARY 프로시저에서도 이와 동일)
- MEANS 프로시저의 옵션
- NWAY 옵션 : 자동변수 _TYPE_이 3인 6개의 데이터만 데이터셋으로 저장
- NOPRINT 옵션 : MEANS 프로시저의 결과를 OUTPUT 윈도우에 출력하지 않도록 지정
- SUMMARY 프로시저
- : MEANS 프로시저와 거의 유사한 기능
- 주로 계산된 기술통계량들에 의해 새로운 데이터셋을 생성하기 위해서 사용
- PRINT 옵션을 사용하지 않으면 결과를 출력하지 않음
- : MEANS 프로시저와 거의 유사한 기능
PROC SUMMARY DATA=mysas.htwt NWAY;
CLASS dept;
VAR age height weight;
OUTPUT OUT=height_m MEAN(height weight)=mean_h mean_w;
RUN;
순위의 계산 : RANK 프로시저
- RANK 프로시저
- 하나 또는 그 이상의 숫자변수에 대한 순위(rank) 계산 (가장 작은 값을 순위 1로 계산)
- 원래변수의 값들 대신 이들 순위를 포함하는 새로운 SAS 데이터셋을 생성
- 일반적인 사용형식
PROC RANK DATA=mysas.htwt OUT=rank_hw TIES=LOW;
VAR age height weight;
RANKS r_age r_height r_weight;
RUN;
VAR : 순위를 계산하는 변수 지정
RANKS : VAR에 지정한 변수에 대응하는 순위변수 생성 (VAR의 변수와 개수 일치)
- PROC RANK 옵션
- OUT=new-SAS-data-set : 계산된 순위들을 저장할 새로운 데이터셋 이름을 지정
- OUT=옵션 생략하면, 기존의 데이터셋이 이 프로시저의 수행결과로 얻어지는 데이터 셋으로 대체됨.
- TIES=옵션 : 둘 이상의 개체가 같은 순위를 가질 때 그 개체들에 순위를 주는 기준을 지정
- MEAN(순위들의 평균), HIGH(순위들 중 높은 값), LOW(순위들 중 낮은 값) 중 선택
- DESCENDING 옵션 : 가장 큰 값을 순위 1로 계산
- RANKS 명령문 : 기존의 변수를 그대로 유지한 상태에서 새로운 순위변수들을 생성
- GROUP=g 옵션 : 순위 대신 백분위수, 십분위수, 사분위수 등과 같이 전체 자료를 g등분 하였을 때의 등위값을 구하고자 하는 경우 사용
표준화 : STANDARD 프로시저
PROC STANDARD DATA=mysas.htwt OUT=stand_hw REPLACE;
VAR height weight;
RUN;
- PROC STANDARD 옵션
- OUT=옵션 생략 : 새로운 자료의 값으로 기존의 데이터셋을 대체(RANK, STANDARD 프로시저 등 )
- REPLACE 옵션 : 결측값에 대해서 그 변수의 평균값으로 대치
- REPLACE 옵션과 MEAN=옵션을 함께 사용 : 결측값은 이 옵션에 주어진 값으로 대치
데이터셋의 정렬 : SORT 프로시저
: 하나 또는 그 이상의 BY 변수에 의해서 데이터셋을 정렬
PROC SORT DATA=mysas.htwt OUT=new_htwt;
BY age;
RUN;
* 해당 변수 앞에 descending 다 써줘야함. 아님 안써준건 오름차순~ ;
PROC SORT DATA=mysas.htwt OUT=new_htwt;
BY dept DESCENDING height;
RUN;
* 중복제거 : NODUPKEY;
PROC SORT DATA=mysas.htwt OUT=new_htwt1 NODUPKEY;
BY dept DESCENDING height;
RUN;
BY : BY 문장에서 지정한 변수에 의해 오름차순(ASCENDING)으로 정렬, DESCENDIG를 지정할 경우에는 내림차순으로 정렬.
OUT : SORT 절차에 의해 순서화된 자료를 OUT 문장에서 지정한 새로운 SAS 데이터셋으로 저장.
정렬상태를 확인하기 위해서는 PRINT 프로시저나 VIEWTABLE 윈도우를 이용
- PROC SORT 옵션
- NODUPKEY 옵션 : 데이터를 정렬한 후에 데이터셋 내의 BY변수들에 대해서 자료값이 동일한 개체가 있을 경우 중복되는 개체를 제거(no duplicate key) (즉, BY 변수들의 값이 모두 같은 경우 하나의 개체만을 남긴다)
- NODUPRECS 옵션 : 데이터셋 내의 모든 변수들에 대해서 자료값이 동일한 개체가 있을 경우 이런 중복되는 개체를 제거(no duplicate records) (즉, 모든 변수들의 값이 동일한 경우 하나의 개체만을 남긴다)
데이터셋의 출력 : PRINT 프로시저
PROC SORT DATA=mysas.htwt;
BY dept ;
RUN;
PROC PRINT DATA=mysas.htwt LABEL;
LABEL name='이름' gender='성별' age='나이' height='키(cm)' weight='몸무게(kg)';
BY dept;
pageby dept;
SUM height weight;
RUN;
BY : BY 변수의 각 수준별로 데이터셋의 내용을 나누어 출력
PAGEBY : 지정된 PAGEBY 변수나, BY 변수의 값이 변화할 때마다 새로운 페이지에 출력
SUM : 지정된 변수들의 합을 출력
SUMBY : 지정된 SUMBY 변수나, BY 변수의 값이 변화할 때마다 그 변수의 합을 출력
VAR : 지정된 변수들만 출력
- PROC PRINT 옵션
- N : 개체의 수를 출력, BY 명령문이 있을 경우에는 BY 변수의 각 수준별 개체의 수도 출력.
- UNIFORM : 각 변수의 값들을 모든 페이지에서 동일한 열(column)에 출력
- 이 옵션을 생략하면, 각 페이지에 가능한 많은 변수와 개체들을 출력하여, 각 페이지에 출력되는 변수의 열이 다를 수 있음
- ROUND : FORMAT 명령문에 지정된 소수점 자릿수까지 반올림
- FORMAT 문이 없는 경우 : 디폴트로서 소수점 이하 두 자리까지 인쇄
- SUM 또는 SUMBY 명령문에 지정된 변수들의 합을 계산하기 전에 반올림
- LABEL : 레이블이 붙여져 있는 변수들은 변수 이름 대신에 레이블을 출력
- BY 변수에 대한 각 수준별 레이블은 출력, SUM 명령문에 대한 것은 출력되지 않음.
사용자 출력 포맷의 작성 : FORMAT프로시저
나만의 형식 가능.
IF THEN 없이도 출력값 변경 통해 변수를 그룹핑 하거나 다른값으로 변경 가능
① 문자형 변수의 값을 다른 문자 문자열로 출력(예: YES를 Y로 출력)
② 숫자형 변수의 값을 그룹핑하여 그룹값을 부여(예:10~19세를 10대로 출력)
프로시저 단계에서 지정된 포맷은 해당 프로시저를 수행하는 동안에만 영향 줌.
사용방법
VALUE : 변수 값을 출력하는 데 사용할 형식을 지정 (※ 문자형 출력형식 “$”를 붙임)
VALUE 명령문에서 범위 지정
①a <- b : a보다 크고 b보다 작거나 같다 (최소값 : low)
②A -< b : a보다 크거나 같고 b보다 작다
③A – b : 는 a보다 크거나 같고 b보다 작거나 같다 (최대값 : high)
library=옵션 : 라이브러리와 카탈로그를 생성하여 영구화 가능
PROC FORMAT LIBRARY=mysas.p_format;
VALUE $jobname 'A' = '전문직'
'B' = '사무직'
'C' = '일용직';
VALUE agegroup low -< 30 = '30미만'
30 -< 40 = '30<=,<40'
40 - high = '40이상';
VALUE prefer 1 = '매우좋아함'
2 = '좋아함'
3 = '싫어함'
4 = '매우 싫어함';
RUN;
OPTIONS FMTSEARCH=(mysas.p_format);
DATA mysas.prefer;
INPUT job $ age coffee drink @@;
LABEL job='직업';
FORMAT job $jobname. age agegroup. ;
CARDS;
A 45 1 4 A 39 1 3 A 56 1 3 B 33 2 3 B 42 3 2
B 28 3 3 B 37 2 2 C 52 4 1 C 21 3 1 C 37 4 2
;
RUN;
개체와 변수의 자리바꿈 : TRANSPOSE프로시저
데이터셋에 있는 개체를 변수로, 변수를 개체로 바꾸어 놓은 새로운 SAS 데이터셋을 생성
VAR : TRANSPOSE 될 변수를 지정.
ID : 새로운 데이터셋에서 변수 이름으로 사용될 변수를 지정.
BY : BY 변수들의 각 수준을 한 그룹으로 하여 개체와 변수의 위치를 바꿈.
- PROC TRANSPOSE 옵션
- OUT=SAS-data-set : TRANSPOSE 한 후의 결과를 저장하는 데이터 셋을 지정
- PREFIX=name : OUTPUT dataset에 transpose된 변수의 prefix를 지정.
- NAME=name : TRANSPOSE된 변수의 NAME을 지정. 만약 지정이 되지 않을 경우 DEFAULT는 NAME 로 지정.
- LABEL=name : TRANSPOSE 된 변수의 LABEL을 지정.
- LET : Input Dataset내에 있는 ID 변수의 DUPLICATE값을 인정.
데이터셋의 관리 : CONTENTS 프로시저
데이터셋이 생성된 날짜와 시간, 개체와 변수의 개수, 변수의 이름 및 형태 등과 같이 데이터셋에 관한 전반적인 내용을 출력
PROC CONTENTS DATA=mysas.htwt OUT=contout varnum;
RUN;
- PROC CONTENTS 옵션
- OUT=옵션에 의해 SAS 데이터셋으로 저장
- 출력결과는 변수의 사전순(alphabetical order)으로 출력
- VARNUM : 데이터 세트의 논리적 순서대로 변수 목록을 출력
출력결과 및 로그의 저장 : PRINTO 프로시저
출력 윈도우 또는 로그윈도우의 내용을 외부 파일로 저장하고자 할때 사용
PRINT=‘filename’ : 출력결과가 저장될 경로(폴더)와 파일 이름을 지정
LOG=‘filename’ : 로그가 저장될 경로(폴더)와 파일 이름을 지정
NEW : 출력결과나 로그가 저장될 때 기존의 내용을 삭제하고 새로 저장되도록 지정.
NEW 옵션을 생략하면 기존의 내용에 새로운 내용이 추가됨.
PROC PRINTTO PRINT='C:\\SAS_Programming\\SAS_Data\\output.txt'
LOG='C:\\SAS_Programming\\SAS_Data\\log.txt' NEW;
RUN;
PROC FREQ DATA=mysas.htwt;
TABLES gender dept;
RUN;
PROC PRINTTO;
RUN;
두번째 PRINTTO 프로시저 : 첫번째 PRINTTO 프로시저의 설정을 해제
'SAS통계프로그래밍' 카테고리의 다른 글
SAS_데이터의 결합 및 관리[SET,MERGE,DO-END] (0) | 2022.06.11 |
---|---|
SAS_데이터 단계에서 사용되는 명령문들[선언문,조건문,변수,RETAIN,ARRAY] (0) | 2022.06.08 |
SAS_다양한 INPUT 명령문의 형식 (0) | 2022.06.07 |
SAS _프로시저[MEANS/UNIVARIATE/PROC SORT/PLOT/CHART] (0) | 2022.06.07 |