본문 바로가기

SAS

3-2강 - SAS data 단계 (변수의 외부 파일 출력, SAS dataset 출력, 설명 부여, SAS 연산자 및 함수) (FILE & PUT, OUTPUT, LABEL)

3. 변수의 외부파일 출력

0) 특징

1> dataset에 있는 결과를 다시 ASCII 파일로 출력해야 하는 경우 data step에서 PUT 구문과 FILE 구문을 사용한다.

2> INFILE 구문과 INPUT 구문의 사용법과 동일하다.

 

1) FILE

1> PUT 구문에 대한 출력물 파일을 지정한다.

ex>

FILE "출력물 파일의 위치";
PUT A1 A2 A3 SUM;

 

2) PUT

1> 가장 최근 FILE 구문에서 지정된 SAS 로그, SAS 출력윈도우, 또는 외부파일 등에 출력 라인을 작성한다.

2> column 설정한다.

ex>

FILE "출력물 파일의 위치"; 
PUT A1 A2 A3 SUM;

3> PUT 구문에 변수를 개별 지정하지 않고 _ALL_ 과 같은 변수열(VARIABLE LIST) 형태로 지정할 수도 있으나, 이 경우에는 ASCII 파일에 'VARIABLE_NAME='과 같이 각 관찰치에 대한 변수의 이름도 함께 출력이 됨에 유의하자.

 

 

왜 오류가 나는거지???

참고 : http://mysas.co.kr/SAS_tiptech/a_question.asp?B_NO=7571&gotopage=5&cmd=content

 


 

4. 변수의 SAS dataset 출력 (OUTPUT)

0) 2가지 용도

1> 반복문에서 최종값만이 SAS data에 지정되는 현상 막기 위해

2> 특정 조건을 만족하는 dataset 생성(출력된 기술통계량을 변수로 바꿔서 사용하고 싶을 때)

 

1) 반복구문에 의한 변수의 생성

1> do 구문

- C와 유사

- DO에 의해 반복문을 진행하고

- END까지가 하나의 반복문이다. (DO와 END는 짝을 이룬다.)

 

2> 예제 코드

- DO I=0 TO 10 BY 2 : i라는 변수가 생기고 0, 2, ... , 10의 값이 들어간다.

- INPUT DATA @@ : DATA에 card 뒤의 1, 2, ... , 6이 들어간다.

- OUTPUT 

  • OUTPUT이 없으면 DO가 돌아가면서 마지막만 (10과 6만) 출력된다.
  • OUTPUT이 있으면 DO의 모든 과정(<0,1>, <2,2>, ... , <10,6>)이 출력된다.

3> OUTPUT이 없는 경우 아래와 같이 마지막 data가 생성된다.

- 그러므로 반복문을 사용하는 경우(그리고 반복문의 모든 변수가 필요한 경우) OUTPUT을 사용해야 한다.

2) 특정 조건을 만족하는 dataset 생성

data 안에서 dataset을 새로 생성하는 방법이다.

1> 실제 사용 사례 

- proc univariate에서 평균을 구하고 이를 변수로 사용하고 싶을 때

 

2> 예제 코드

- data a B1 B2 : dataset을 3개 선언 / 변수와 data는 가장 맨 앞의 a로 저장

(구분할 것 3가지 dataset이름 / 변수 / 읽어들인 측정 data 값)

- IF DATA<3 THEN OUTPUT B1 : DATA(변수)의 값이 3보다 작으면 B1(dataset 이름)으로 빼가라

 

cf> OUTPUT 명령어에서 지정할 수 있는 기술통계량

 


 

5. 변수의 설명 부여 (LABEL)

1> 사용 사례

이전에 변수를 지정할 때에는 'DATA'(dataset 이름 설정)와 'INPUT'(변수 설정)을 사용

그런데 INPUT문 내부에는 영어만 들어갈 수 있다.

대신에 나중에 결과 출력시 한글 등 다른 글을 넣고 싶을 때 LABEL을 사용

 

2> 예시 

- LABEL VARIABLE1 = 'LABEL1' ... : 변수 명(VARIABLE1)을 적고 작은 따옴표 안에 설명(LABEL1)을 적는다.

 

작은 따옴표

label data라고 써야 함

영어에 대한 설명을 할 수 있음

 


 

6. SAS 연산자 및 함수

1) 산술 연산자

2) 산술함수

(x4는 3 나와야 하는데 오타)

 

3) 수학함수

4) 표본 통계량 함수

proc univariate를 해도 간단하게 요약을 해주지만 

일부 통계량만 궁금한 경우에 아래의 함수들을 사용할 수 있다.

 

5) 확률 밀도 함수

1> 사용 사례

통계 패키지를 사용하기 때문에 분포표를 볼 필요는 없지만

분포 확률을 계산하려고 할 때

(다 외우기는 어렵지만) 

 

2> 암기 방법

- 이산 : 이항, 기하, 음이항, 베르누이

- 이산 vs 연속 (위에 2개 vs 나머지)

  • 이산 확률 변수는 범위 관련 parameter(m)이 맨 뒤에
  • 연속 확률 변수는 범위 관련 parameter(x)가 맨 앞에

3> 설명

- 이산과 연속확률분포 모두 사용 가능하게 누적 분포 형태로 설명되어있다.

- PROBNML(p, n, m) : p 먼저 쓰는 거 헷갈리지 않기

- PROGAM(x, a) : G(a, 1) 1임을 기억하기