BookmarkSubscribeRSS Feed

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

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

 

[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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags