본문 바로가기

SAS

3-1강 - SAS data 단계 (dataset 생성, datset 및 변수의 제어)

1. dataset 생성

1) CARDS

1> 용도: data가 많지 않은 경우 사용

2> 구현: 직접 프로그램 내부에 입력

3> 구체적 구현: CARDS 뒤에 data를 입력하고 -> ;(semi-colon)으로 입력 data의 마지막을 나타낸다.

 

2) INFILE (외부파일을 읽어 들이는 방법)

DATA A;
	INFILE 'G:\sas data file\a1.txt';
	INPUT class ID Name$ gender $ Major $ Age Rigion $;
run;

1> 외부에서 작성된 아스키 파일이나 txt 파일 형태로 저장된 파일을 읽어들인다.

2> 주의: 경로 설정을 정확하게 해야 한다.

 

 


 

2. dataset 및 변수의 제어

1) INPUT문

: SAS 파일 구성 시 자료들의 속성을 변수로 지정하기 위해 사용

 

2) SET 구문의 활용 (2가지 용법)

1> dataset 이름 변경 및 갱신

: 이미 만들어진 dataset의 이름을 바꾸어 다른 추가적인 처리를 할 경우 사용

ex>

DATA new-dataset-name;

SET old-dataset-name;

 

cf> 예제

- 'DATA TIRE2;' : 미리 만들어놓고 할당해야 하기 때문에 이름이 겹치지 않는 DATA 변수 만들어 놓는다.

- 'SET TIRE;' : TIRE를 그대로 가져온다.

- IF TIRE > 50 then class=1; : 그래서 class라는 숫자 변수를 추가한다.

 

cf> F4 단축키는 바로 이전에 실행한 것을 다시 불러올 수 있다.

 

 

2> dataset 세로 결합

ex> 

DATA new-dataset-name;

    SET dataset-name1 dataset-name2 dataset-name3 ...;

cf> 예제

 

- 'INPUT A1-A3' : A1, A2, A3 3개의 변수를 만든다. ('-' : 해당 변수 사이에서 변수를 연속된 개수만큼 받는다.)

- 'SET SET1 SET2' : SET1과 SET2를 세로방향으로 병합한다.

- 'PROC PRINT' : 맨 마지막에 선언된 dataset을 출력

 

- 세로 병합 시 각 dataset이 보유한 변수가 서로 다르거나 없으면 비워둔다. (결측치로 처리한다.)

 

cf> 앞으로 2가지 병합이 나온다.

- 세로 병합 (중복된 변수의 값을 가질 일이 없다.)

- 가로 병합 (중복된 변수에서 다른 값을 가질 수 있다.)

3) 데이터의 가로 병합 - MERGE

ex> DATA new-dataset-name;

    MERGE dataset-name1 dataset-name2 dataset-name3 ...;

 

1> 경우의 수

- 중복된 변수에서 동일한 값을 가진다. -> 문제 없이 동일한 값으로 합쳐진다.

- 중복된 변수에서 다른 값을 가진다. -> 어떤 기준에 따라 하나의 값으로 대체해야한다.

(전자는 쉬우니 아래에는 후자 위주로 다룬다.)

 

2> BY에 대한 이해

'BY col1'

- col은 놔두라는 의미

- col1 변수가 다른 값을 가지면 다른 것이다.  -> 그래서 다른 개수 만큼의 data를 가진다.

 

 

3> BY 유무에 따른 차이

  전제 중복변수 처리   대치된 data 처리
BY X X

가장 뒤의 dataset으로 대치

-> 다른 data의 변수 값은 삭제
BY O 정렬되어 있어야한다.

'BY'에 해당하는 dataset으로 대치

-> 다른 data의 변수는 바로 밑으로 이동

- BY에 해당하는 dataset이 정렬되어 있지 않다면 PROC SORT로 정렬해야 한다.

 

4> 예제

- A1은 (1, 4)와 (1, 7)로 정렬되어 있다. -> BY 구문에 A1을 사용할 수 있다.

- 'by a1' : 'a1은 그대로 둬라'라는 의미 -> a1이 가지는 값은 1, 4, 7 이어서 3개의 raw를 가진다.

 

5> BY 예제

BY A1

- BY A1 : 'A1은 그대로 둬라'라는 의미 -> A1이 가지는 값은 1, 4, 7 이어서 3개의 raw를 가진다.

 

4) 변수의 이름을 변경하기 - RENAME

1> 'RENAME old-name-1=new-name-1' : old-name-1 -> new-name-1으로 변경한다.

(순서 : old = new)

2> 예제

5) 기존 변수들로 새로운 변수 만들기

1> 기존 변수들로 새로운 변수를 만들기 때문에

2> DATA 명령어 내부(dataset 내부)에서 새로운 변수를 만든다.

3> '새로운 변수 = 기존 변수들을 이용한 연산' 꼴로 dataset 내부에 넣으면 된다.

 

6) 변수의 삭제, 유지 - DROP, KEEP

0> 각각을 사용하는 경우

-  DROP과 KEEP은 서로 반대 성향이며

- 유지할 것이 많으면 DROP

- 삭제할 것이 많으면 KEEP

 

1> DROP : 지정된 변수를 데이터 셋에서 삭제

2> KEEP : 지정된 변수를 제외한 모든 변수를 데이터 셋에서 삭제하는 기능 

3> 예제

- 'SUM = A1+A2+A3' : SUM이라는 새로운 변수를 만든다.

 

7) 관찰지의 삭제 - DELETE

그동안은 변수에 대해 적용되었다. 이번에는 변수가 아니라 관찰지에 적용한다.

1> 특정 조건에 맞는 관찰지를 SAS dataset에서 제거하고자 할 때 사용

2> 보통 if와 함께 쓰이는 경우가 많다.

3> 예제

 

8) 앞의 record를 가져올 때 - RETAIN

0> SAS에서는 record 단위로 data를 읽고 처리하기 때문에 앞의 record에서 계산된 결과를 다음 record에서 쓸 수 없다. (덮어 쓰는 문제)

1> 초기치를 지정하는 것과 유사

2> 누적치를 구할 때 유용

3> 예제