[데이터 셋 설정]
지난 라이브러리 설정 포스팅에서 데이터 셋 생성에 대해 간략하게 언급했습니다.
오늘은 내/외부 파일을 불러와 데이터 셋을 만드는 방법에 대해 자세히 다루고자 합니다.
[코드]
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 |
댓글