데이터 스터디/SAS

SAS - 데이터 셋의 결합 및 관리 (merge, do-loop문, 자동변수, 외부파일 put문)

케이와이엠 2023. 3. 22. 12:51

드디어 6장 !! SAS 데이터 셋의 결합 및 관리 !!

 

1. 세로 결합 / 가로 결합

2. 데이터셋 옵션의 사용

3. DO - END 명령문

4. 자동변수

5. 외부파일로 데이터 출력하기

6. 데이터 내보내기 마법사

 

# 데이터 셋 결합 : 세로 결합 & 가로 결합

@@ 세로 결합

: 두 데이터 셋을 수직적으로 결합 . 변수 기준으로 합친다

: 세로로 붙여서 밑으로 길어짐

 

방법은 set, drop, keep 명령문들을 써서 합쳐준다.

+) 복사하는 법 : set 데이터 셋

+) 변수 부분 선택하는 법 : drop 변수명 / keep 변수명

+) 연결 : set 데이터 셋1 데이터셋2 ; set에 여러 개 넣어주기

결측값에는 . 찍어줘야한디

@@ 가로 결합 : MERGE 명령문, UPDATE 명령문 + PROC SORT

: 두 데이터 셋을 수평적으로 결합 . 관측값 기준으로 합친다

: 가로로 붙여서 옆으로 길어짐

-UPDATE 문을 사용해서 뒤의 결측값을 다른 값으로 대체시키지 않고 기존 자료 값을 유지한다.

-PROC SORT 로 DATA STEP전에 어떤 걸 기준으로 결합할 지 기준 변수를 정해(오름차순으로)

PROC SORT DATA = 데이터셋 이름; BY 변수명;RUN;

모든 데이터 셋이 PROC SORT 를 이용하여 사전에 정렬되어있어야 한다. BY명령문을 적용하지 않으면 오류 뜰 수도

proc sort 는 항상 by 변수 랑 함께 사용된다.

 

가로 결합 해주기 전에 proc sort data = ;by 변수명;run; 해주기

 

update 문을 사용하면 기존 자료 값을 유지할 수 있다.
 
 
 
+) 가로결합과 새로운 변수 추가 : merge문 & if 문

 

merge ---- by ---- 하고

if mid 했으면 mid 가 새로운 변수로 all3 데이터셋에 꽉차게 나옴

if final 해주면 final 이 꽉 차게 나옴
결과

 


mid 랑 final 조금 변형해서 완성
 

 

두번째 세번째 관측값 보기 : proc step 에서 firstodbs&obs 사용

 

# 명령 반복문 : DO - END 명령문

- DO 와 END 사이에 들어있는 명령문을 반복 수행한다.

EX) DO i 1 to 100 by 5; sum=sum+i ; end output;

-sum 값 나열할거면 맨 앞에 retain sum 0; 지정해주기

이자율 계산 ,
do~~ statement ~~~ output;end;run;

# 반복처리문 (DO-LOOP)

@@DO-END문

- DO i 1 to 100 by 5; sum=sum+i ; end output;

- DO 값 리스트 설정도 가능 !! DO month ='jan','feb','mar';

DO odd=1,3,5,9 / do i = var1, var2, ,,

 

[ex1]

n을 0으로 고정시킨 다음에, n=n+i / retain 말고 n=0으로 사용하는게 일반적인듯

 

2씩 띄우기

[ex2]

[ex3]

0부터 30까지의 수에서 3의 배수들의 합

 

@@DO-UNTIL

- 조건식이 참이 될 때까지 DO END 사이의 명령문을 계속 실행

-조건식이 참이 되면 그제서야 중지함

 

n이 10보다 크기 전까지 실행한다 !! do 하고 범위지정해주면 됨

@@DO-WHILE

- 조건식이 참인 것만 골라서 실행함

-

n이 0부터 시작해서 n<10인 것만 수행

 

# 난수발생

평균이 75, 분산이 5인 랜덤 함수 만들기.

@@자동변수

- 작업에 필요한 정보를 임시로 저장하는 곳.

-라이브러리에 저장되진 않지만 실행만 시킴.

- _N_ , _ERROR_

- FIRST.변수 와 LAST.변수 => PROC SORT ~~ BY문 으로 정렬

[ _n_ 예시]

idnum에 새로운 자동변수를 추가하기

[ _n_ / _ERROR_예시]

4개의 기존 변수에다가 _n_, _error_ 로 총 6개 변수 만들기

 

if를 뒤에 해도 가능

 

[first.변수명, last.변수명 예시]

first.by 변수 & last.by 변수 : 특정 변수 별로 쵣 최저 비교한다.

 

변수를 지정해줘서 first. 변수 , last.변수가 나오도록 함

 

@@외부파일로 데이터 출력하기

SET - PUT 문

PUT 명령문을 이용하여 SAS OUTPUT에 출력돼

 

FILEPRINT 로 인쇄형식으로 넣은 다음에 PUT 하기

 

PUT문으로 외부파일로 출력하는건데, 이때 PUT문에 이것저것 넣을 수 있음. 이때는 PUT 변수 단위값들 변수 나열해놓으면 됨