BookmarkSubscribeRSS Feed

[SAS 프로그래밍] TXT 데이터 다루기 (1)

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 612

 

[SAS 프로그래밍] TXT 데이터 다루기 (1)

 

안녕하세요^^ 

 

이번 시간에는 SAS에서 text(확장자 : .txt) 파일을 다루는 것을 주제로 살펴보도록 하겠습니다.

TXT 파일은 용량도 작고 사전에 설치 되어야 하는 프로그램이 필요하지 않아서 원시데이터파일을 저장할 때 많이 사용되곤 합니다.

 

먼저 txt 형태로 저장되어 있는 데이터를 SAS로 불러오는 방법에 대해 알아보겠습니다.

 

 

 

▶ 예제데이터  

 

다운로드 - 2020-06-18T104143.623.jpg다운로드 - 2020-06-18T104144.767.jpg다운로드 - 2020-06-18T104145.687.jpg

 

txt 파일로 저장되어 있는 3개의 예제 데이터는 숫자와 문자로 이루어진 데이터 입니다. 구분자는 쉼표로 되어있습니다.

 

 

▶ 하나의 txt 파일 불러오기

 

▷ 우선 하나의 txt 파일을 불러 오는 방법으로 PROC IMPORT를 사용하는 방법과 DATA STEP에서 INFILE문을 사용하여 불러오는 방법에 대해 알아보겠습니다.

 

다운로드 - 2020-06-18T104146.927.jpg  다운로드 - 2020-06-18T104148.286.jpg

 

▷ coding 1

DATAFILE= : 불러들여올 txt 파일이 있는 위치와 파일 이름확장자명을 입력합니다.

OUT= : 생성할 SAS data set 이름을 지정해 줍니다.

 

DBMS= 는 구분자를 입력하는 옵션으로,

여기서 사용된 예제 데이터에서는 구분자가 쉼표이기 때문에 DBMS=DLM으로 입력한 후, DELIMITER= 옵션에 쉼표를 입력하였습니다.

만약 원시 데이터가 탭(TAB)으로 구분되어 있다면 DBMS=TAB으로 설정할 수 있고,

이 외에 다른 문자로 구분되어 있다면 (예를 들어, 느낌표(!)와 같은 구분자)

DBMS=DLM ; DELIMITER=’!’ ; 와 같이 설정 가능합니다.

 

REPLACE 옵션은 덮어쓰기를 하기 위해 사용하였고,

GETNAMES= 옵션으로 원시 데이터에서 첫 행을 변수명으로 사용할 지 여부를 설정할 수 있습니다. 기본 설정값(default)은 GETNAMES=YES이고 해당 예제 데이터에서는 첫 행에 변수명이 입력되어 있지 않기 때문에 GETNAMES=NO 로 설정하였습니다.

 

 

다운로드 - 2020-06-18T104149.655.jpg  다운로드 - 2020-06-18T104151.039.jpg

 

▷ coding 2

이번에는 DATA step에서 INFILE 문을 사용하는 방법입니다.

 

INFILE에 파일 경로와 데이터 명확장자를 입력하고

DSD와 함께 DELIMITER= 옵션을 사용하여 구분자를 설정하며구분자 사이에 아무 값이 없는 경우에는 결측으로 처리합니다.

 

MISSOVER 옵션은 결측값이 있더라도 데이터를 끝까지 읽도록 하며,

LRECL 옵션으로 읽어들이는 값의 길이를 지정할 수 있습니다.

 

INFORMAT문으로 각 변수의 포맷을 설정하고

INPUT문에 데이터의 변수명을 입력하면 txt로 입력된 데이터를 SAS로 불러들여올 수 있습니다.

 

 

 

▶ 두 개 이상의 txt 파일 한번에 불러오기

 

 이번에는 한번에 여러 개의 txt 파일을 불러들여오는 방법을 알아보겠습니다.

 

다운로드 - 2020-06-18T104152.119.jpg  다운로드 - 2020-06-18T104153.366.jpg

 

▷ coding

위에서 사용하였던 DATA STEP에서의 INFILE문을 사용하여 한번에 여러 개의 txt파일을 불러들일 수 있습니다.

 

이전에 사용하였던 코드와 다른점은,

불러오고자 하는 데이터의 저장 경로 및 파일명을 INFILE문에 지정하는 것 대신에 CARDS (DATALINES); 부분에 입력을 하는 것 입니다.

 

FLIEVAR= : 기존에 INFILE에 경로를 지정하던 것으로 인식하지 않고 새로 지정한 변수(save_location)의 경로로 인식하기 위해 사용합니다.

END= : 데이터가 마지막 레코드일 때 1로 설정이 되는데, 아래에서 변수명을 입력하기 위한 DO-WHILE문에서 마지막 데이터까지 반복이 되도록 지정하기 위해 사용합니다.

DELIMITER= : 구분자를 지정할 수 있습니다.

 

 

INPUT문에서 경로 및 파일명을 save_location으로 지정하고

INFORMAT문에서 문자 길이를 지정하여 줍니다.

 

변수명을 입력할 때 DO-WHILE(not readout) 대신에 DO-UNTIL(readout) 도 사용가능합니다.

 

 

 

 

이상으로 한 개 또는 여러 개의 txt파일을 SAS로 불러오는 방법에 대해 PROC IMPORT와 DATA STEP을 사용하여 알아보았습니다.

 

감사합니다^^

 

[Reference]

http://support.sas.com/documentation/cdl/en/vsamref/62979/HTML/default/viewer.htm#n17lkqvyze0u1en139...

Version history
Last update:
‎06-17-2020 10:36 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags