본문 바로가기
Data_Analysis/SAS

[SAS] Data Step

by Classic! 2020. 11. 16.

[데이터 셋 설정]

지난 라이브러리 설정 포스팅에서 데이터 셋 생성에 대해 간략하게 언급했습니다.

오늘은 내/외부 파일을 불러와 데이터 셋을 만드는 방법에 대해 자세히 다루고자 합니다.

 


[코드]

1. 데이터 불러오기

1) SAS 내장 데이터 사용하기 

: 내장 데이터는 별도의 경로 지정이 필요하지 않으며, 가장 간단하게는 아래와 같이 파일명만 입력해도 사용할 수 있습니다.

 

DATA 데이터셋 명;

RUN;

 

2) 외부 데이터 사용하기 

DATA 데이터셋;

INFILE "파일 경로/파일";

RUN;

 

또는 데이터를 저장할 라이브러리를 지정해줄 수 있습니다.

 

DATA 라이브러리.데이터셋;

INFILE "파일 경로/파일";

RUN;

 

 

2. 데이터 셋 옵션

 

DATA 데이터셋;

%LET _EFIERROR=0;

INFILE "파일 경로/파일" DSD DLM="|" MISSOVER FIRSTOBS=2; 

 

1) %LET _EFIERROR=0 : 시스템 변수를 초기화할 때 오류 발생 시 자동으로 실행을 중단시키는 옵션

2) DLM(=DELIMITER) : 로그 데이터에서 변수 별로 구분하는 구분자를 지정. 

| >> "|"

, >> ","

tab >> expandtabs 

3) DSD : 구분자가 연속적으로 나타날 경우 구분자 사이에 결측치가 있는 것으로 간주

4) MISSOVER : 빈칸은 결측치로 간주하고 데이터를 끝까지 읽음

5) FIRSTOBS : 데이터를 몇 번째 줄부터 읽을지 지정. 로그 데이터의 첫 줄에 변수명이 있으면 2번째 줄부터 데이터라고 간주

 

 

3. 컬럼 옵션

 

DATA 데이터셋;

%LET _EFIERROR=0;

INFILE "파일 경로/파일" DSD DLM="|" MISSOVER FIRSTOBS=2;

    LENGTH custid $ 10;

    name $ 3-6

    resist_date ddmmyy10;

    price best12.;

INPUT 

    custid

    name

    year 

    price

;

RUN;

 

1) LENGTH : custid 변수의 데이터 중 가장 긴 값을 수용하는 길이를 할당. 문자 변수는 초기에 한번 설정하면 나중에 바꿀 수 없으나, 숫자 변수는 LENGTH 로 변경 가능.

2) 변수명 $ 숫자 : 변수의 값들을 문자형으로 인식함. $ 뒤의 숫자로 해당 컬럼 데이터의 자릿수 지정.

위의 예시에서 name 변수의 데이터는 3에서 5자리의 데이터를 넣도록 지정

3) ddmmyy10 : 날짜 타입 변수를 dd-mm-yyyy 형식으로 지정 

4) best12. best32. : 변수의 값들을 숫자형으로 인식

 

DATA 데이터셋;

    SET readline(keep=i:); 

IF x_t="01";

ELSE IF x_t in :("01","03");

 

5) " : " : 데이터 subset 기능. (keep=i:)는 i로 시작하는 변수만 남긴다는 의미.

x_t=:"01"은 01로 시작하는 개체

x_t in :("01","03") in과 : 를 함께 쓰면 괄호 안의 조건에 해당하는 자료를 선택한다는 의미. >,< 논리 연산자와도 사용 가능.

 

 

이 외에도 FORMAT 함수로 컬럼의 형식을 지정하는 방법이 있습니다. FORMAT 함수에 관하여 추후 포스팅에서 자세히 다루겠습니다.

 

'Data_Analysis > SAS' 카테고리의 다른 글

[SAS] 자료 행 분할  (0) 2020.12.01
[SAS] Macro  (0) 2020.11.23
[SAS] SQL문  (2) 2020.11.23
[SAS] 라이브러리 설정  (0) 2020.11.16
[SAS] SAS Intro  (0) 2020.11.16

댓글