지금까지 다른 syntax로 동일한 결과를 추출할 수 있는 방법이 두 가지 이상 있습니다.
이번 게시글은 DATA 단계를 사용하여 구분자가 있는 데이터 파일을 읽는 방법에 대해 알아보겠습니다.
SAS 프로그램에는 특정 유형의 데이터 파일을 쉽게 읽을 수 있도록 하는 몇 가지 기능이 있습니다.
1) PROC IMPORT
PROC IMPORT는 데이터 파일을 스캔하여 변수 유형(문자 또는 숫자)을 자동으로 결정하고 문자 변수에 적절한 길이를 할당하며 다음을 수행할 수 있습니다.
PROC IMPORT는 데이터 파일에서 두 개의 연속된 구분 기호를 결측값으로 처리하고, 따옴표로 둘러싸인 값을 읽으며, 한 줄의 데이터가 부족할 때 결측값을 변수에 할당합니다.
데이터 파일의 첫 번째 줄을 사용하여 변수 이름을 지정할 수 있습니다. IMPORT 절차는 실제로 당신을 위해 DATA 단계를 작성하고, 그 후에 프로그램을 실행하면 로그 창에서 생성된 데이터 단계를 볼 수 있습니다.
PROC IMPORT DATAFILE = ’filename’ OUT = data-set;
여기서 읽고자 하는 파일은 DATAFILE= 옵션 뒤에 오고 SAS 데이터 세트의 이름은 다음과 같습니다.
생성하려는 OUT= 옵션을 따릅니다. SAS는 확장자로 파일 유형을 결정합니다.
Type of File |
Extension |
DBMS Identifier |
Comma-delimited |
.csv |
CSV |
Tab-delimited |
.txt |
TAB |
Delimiters other than commas or table |
DLM |
PROC IMPORT 문의 DBMS= 옵션은 파일의 확장자가 적절하지 않거나 파일 유형이 DLM인 경우 다음을 사용해야 합니다.
이미 데이터 세트가 있는 경우 REPLACE 옵션을 사용하면 됩니다. OUT= 옵션에서 지정한 이름의 SAS 데이터 세트를 덮어쓰려고 합니다.
REPLACE 및 DBMS 옵션이 모두 있는 PROC IMPORT의 일반 형식입니다.
PROC IMPORT DATAFILE = ’filename’ OUT = data-set
DBMS = identifier REPLACE;
IMPORT 프로시저는 기본적으로 데이터 파일의 첫 번째 줄에서 변수 이름을 가져옵니다.
만약에 그렇지 않으면 PROC IMPORT 문 뒤에 GETNAMES=NO 문을 추가할 수 있습니다.
PROC IMPORT는 변수에 VAR1, VAR2, VAR3 등의 이름을 할당합니다.
또한 데이터 파일이 DLM 유형이고 PROC IMPORT는 구분 기호가 공백이면, 다른 구분 기호가 있는 경우 DELIMITER= 문에 지정합니다.
아래의 syntax는 이 두 가지를 모두 보여줍니다.
PROC IMPORT DATAFILE = ’filename’ OUT = data-set
DBMS = DLM REPLACE;
GETNAMES = NO;
DELIMITER = ’delimiter-character’;
RUN;
다음 예제는 커피숍에서 나온 데이터입니다.
저녁 내내 각 밴드가 있을 시에는 고객들의 수를 기록한 데이터로 데이터는 밴드명, 공연일, 오후 8시, 9시, 10시, 11시 출석 고객 수 등입니다.
밴드 중 하나인 "Stop, Drop, Rock-N-Roll"에는 밴드 이름에 쉼표가 있습니다. 데이터 값에 구분 기호가 포함되어 있는 경우에는 다음 값은 따옴표로 묶어야 합니다.
Band Name,Gig Date,Eight PM,Nine PM,Ten PM,Eleven PM
Lupine Lights,12/3/2003,45,63,70,
Awesome Octaves,12/15/2003,17,28,44,12
”Stop, Drop, and Rock-N-Roll”,1/5/2004,34,62,77,91
The Silveyville Jazz Quartet,1/18/2004,38,30,42,43
Catalina Converts,1/31/2004,56,,65,34
PROC IMPORT DATAFILE ='c:\MyRawData\Bands.csv' OUT = music REPLACE;
PROC PRINT DATA = music;
TITLE 'Customers at Each Gig';
RUN;
■ Reading PC Files with the IMPORT Procedure
SAS/ACCESS for PC File Formats 소프트웨어가 있는 경우 IMPORT를 사용할 수 있습니다.
여러 가지 유형의 PC 파일을 가져오는 절차입니다.
IMPORT 절차가 파일을 스캔하여 변수 유형 1을 결정하면 기본적으로 변수 이름에 첫 번째 데이터 행을 사용합니다.
윈도우즈 운영 환경에서 마이크로소프트 Excel, Lotus, dBase 및 Microsoft Access 등을 UNIX 시스템에서는 dBase 파일을 가져올 수 있으며 SAS 9.1부터, 유닉스 사용자는 마이크로소프트 엑셀과 마이크로소프트 액세스 파일도 읽을 수 있습니다.
SAS/ACCESS가 필요하지 않은 Windows 운영 환경에서 PC 파일을 읽는 것은 동적 데이터 교환(DDE)입니다.
· Microsoft Excel, Lotus, and dBase files
다음은 IMPORT의 일반적인 형식입니다
PROC IMPORT DATAFILE = ’filename’ OUT = data-set
DBMS = identifier REPLACE;
여기서 filename은 읽고자 하는 파일이고, data-set은 읽고자 하는 SAS 데이터 세트의 이름입니다.
REPLACE 옵션은 OUT= 옵션에 SAS 데이터셋이 이미 존재 할 때 사용합니다.
데이터 파일의 확장자가 적절하면 DBMS= 옵션이 필요하지 않을 수 있습니다.
Microsoft Excel 파일을 읽고 있고 파일에 시트가 두 개 이상 있는 경우 명령문을 사용하여 읽을 시트를 지정할 수 있습니다.
SHEET=name-of-sheet;
· Microsoft Access Files
Microsoft Access 파일을 읽으려면 다음을 사용하는 대신 DATAFILE= 옵션을 사용하려면 다음과 같이 DATABASE= 및 DATATABLE= 옵션이 필요합니다.
PROC IMPORT DATABASE = ’database-path’ DATATABLE = ’table-name’
OUT = data-set DBMS = identifier REPLACE;
데이터가 포함된 지역 마이너리그 야구팀 경기의 어니언링 판매에 대해 Microsoft Excel 스프레드시트가 있다고 가정합니다.
방문팀 이름 뒤에는 매장과 관람석 판매, 팀별 안타와 실점 수 순으로 데이터 세트가 나옵니다.
■ Reading PC Files with DDE
PC 파일을 읽는 한 가지 방법은 DDE(동적 데이터 교환)입니다.
DDE에는 몇 가지 장점이 있습니다.
PC 파일을 읽는 다른 방법과 비교할 때 단점. DDE는 다음에서만 사용할 수 있습니다.
Windows 운영 환경 및 응용 프로그램(예: Microsoft Excel)은 SAS가 파일에 액세스하는 동안 컴퓨터에서 실행 중입니다.
DDE를 사용하면 PC 파일에 저장된 데이터에 액세스하고 추가 SAS 제품 라이선스가 필요하지 않습니다.
DDE를 통해 데이터에 액세스하는 방법에는 여러 가지가 있습니다.
- 클립보드에 데이터 복사
- DDE 삼중항 지정
- SAS에서 PC 응용 프로그램을 시작한 다음 데이터를 읽습니다.
DDE 결정에 신경쓰지 않으려면 삼중항을 사용하면 SAS로 읽고자 하는 행과 열을 복사할 수 있습니다.
그런 다음 DDE FILENAME 문에서 CLIPBOARD 키워드를 사용합니다.
예를 들어 다음 스프레드시트가 Microsoft Excel에서 열려 있다고 가정합니다.
/* Read an Excel spreadsheet using DDE*/
FILENAME baseball DDE 'CLIPBOARD';
DATA sales;
INFILE baseball NOTAB DLM='09'x DSD MISSOVER;
LENGTH VisitingTeam $ 20;
INPUT VisitingTeam CSales BSales OurHits TheirHits OurRuns TheirRuns;
RUN;
FILENAME 문은 fileref(BASEBALL)를 DDE 유형으로 정의하고 다음을 수행하도록 지정합니다.
클립보드의 내용을 읽습니다. 기본적으로 DDE는 데이터 사이에 공백이 있다고 가정합니다.
가치. 따라서 데이터에 공백이 포함된 경우 NOTAB 및 INFILE 문의 DLM='09'x 은 SAS에 탭 문자를 넣도록 지시합니다.
(NOTAB)을 사용하고 탭 문자를 구분 기호로 정의합니다(DLM='09'x). 또한, 만약
데이터에 누락된 값이 있는 경우 INFILE 문에 DSD 및 MISSOVER 옵션을 추가할 수 있습니다. DSD 옵션은 행에 있는 두 개의 구분 기호를 누락된 데이터로 처리하고 MISSOVER 옵션은 SAS가 현재 라인의 데이터가 부족한 경우 데이터 읽기를 계속하기 위해 다음 데이터 라인으로 이동하지 않도록 지시합니다.
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.