지금까지 다른 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가 현재 라인의 데이터가 부족한 경우 데이터 읽기를 계속하기 위해 다음 데이터 라인으로 이동하지 않도록 지시합니다.
Nearly 200 sessions are now available on demand in the Innovate Hub.
Watch Now →