BookmarkSubscribeRSS Feed

[ SAS 활용 노하우 ] SAS basic Syntax 7

Started ‎08-28-2022 by
Modified ‎08-28-2022 by
Views 904

 

 

■ Temporary VS Permanent SAS Data Sets

SAS 데이터 세트는 임시 및 영구 두 가지 종류로 나눌 수 있습니다. 

임시 SAS 데이터 세트는 현재 작업 또는 세션 중에만 존재하며, 완료되면 SAS에 의해 자동으로 지워집니다. 

SAS 데이터 세트가 영구적이라해도 작업 또는 세션이 종료된 후에도 데이터 세트가 계속 유지된다는 것을 의미하지는 않습니다.

데이터 집합의 각 유형에는 장점이 있습니다. 

그러나 일반적으로 데이터 세트를 더 많이 사용하는 경우 데이터를 사용할 때마다 새 임시 SAS 데이터 세트를 생성하는 것보다 영구 SAS 데이터 세트로 저장하는 것이 더 효율적입니다.

SAS data set names

모든 SAS 데이터 세트에는 WORK.BIKESALES와 같은 2레벨 이름이 있으며 두 레벨은 마침표로 구분됩니다. SAS 데이터 세트 이름의 첫 번째 레벨인 이 경우 WORK는 libref(SAS 데이터 라이브러리 참조의 약자)라고 합니다.

라이브러리 참조는 특정 위치를 가리키는 화살표와 같습니다. 라이브러리 참조가 플로피 디스크나 CD와 같은 물리적 위치를 나타내는 경우도 있고 디렉터리나 폴더와 같은 논리적 위치를 나타내는 경우도 있습니다. 두 번째 수준인 BIKESALES는 라이브러리 내에서 데이터 세트를 고유하게 식별하는 멤버 이름입니다.

libref와 멤버 이름은 모두 유효한 SAS 이름에 대한 표준 규칙을 따릅니다. 문자나 밑줄로 시작해야 하며 문자, 숫자 또는 밑줄만 포함해야 합니다. 그러나 라이브러리 참조는 8자를 초과할 수 없으며 멤버 이름은 최대 32자까지 가능합니다.

데이터 세트를 임시 또는 영구적으로 만들도록 SAS에 명시적으로 지시하지 않습니다. 이는 데이터 세트를 생성할 때 데이터 세트에 부여한 이름에 의해 암시될 뿐입니다.

대부분의 데이터 세트는 DATA 단계에서 생성되지만 PROC 단계는 데이터 세트를 생성할 수도 있습니다. 2단계 이름을 지정하면(그리고 libref가 WORK가 아닌 경우) 데이터 세트는 영구적입니다. 데이터 세트 이름의 한 수준만 지정하면(이 책의 대부분의 예에서와 같이) 데이터 세트는 임시입니다.

SAS는 한 수준의 이름을 멤버 이름으로 사용하고 자동으로 libref WORK를 추가합니다.

정의에 따라 libref가 WORK인 모든 SAS 데이터 세트는 임시 데이터 세트이며 작업 또는 세션이 끝나면 SAS에 의해 지워집니다.

다음은 몇 가지 샘플 DATA 문과 이들이 생성하는 데이터 세트의 특성입니다.

 

Data statement

Libfef

Member Name

Type

DATA ironman;

WORK

ironman

temporary

DATA WORK.tourdefrance;

WORK

tourdefrance

temporary

DATA Mylib.doublecentury;

Mylib

doublecentury

permanent

 

 

 

 

 

 

■ Temporary SAS data sets

다음 프로그램은 임시를 생성한 다음 인쇄합니다.

 

 

DATA distance;
Miles = 26.22;
Kilometers = 1.61 * Miles;
PROC PRINT DATA = distance;
RUN;

 

 

 

libref WORK는 DATA 문에 나타나지 않습니다. 

데이터 세트에는 한 수준의 이름만 있기 때문에 SAS는 기본 라이브러리인 WORK를 할당하고 해당 라이브러리 내에서 DISTANCE를 멤버 이름으로 사용합니다. 로그에는 완전한 2단계 이름과 함께 이 메모가 포함되어 있습니다.

■ Permanent SAS data sets

libref를 사용하려면 먼저 libref를 정의해야 합니다. 

SAS 탐색기의 새 라이브러리 창을 사용하여 라이브러리를 정의할 수 있습니다. LIBNAME 문을 사용하거나 SAS가 직접 참조을 사용하여 사용자를 위한 libref를 정의하도록 할 수도 있습니다.

다음 프로그램은 영구 SAS를 생성한다는 점을 제외하고는 이전 프로그램과 동일합니다.

 

 

 

DATA Mylib.distance;
Miles = 26.22;
Kilometers = 1.61 * Miles;
PROC PRINT DATA = Mylib.distance;
RUN;

 

 

 

 

■ Usiing Permanent SAS Data Sets with LIBNAME Statements

libref는 SAS 데이터 라이브러리의 위치에 해당하는 별명입니다.

SAS 데이터 세트 이름의 첫 번째 레벨로 libref를 사용하면 SAS는 해당 위치에서 해당 데이터 세트를 찾습니다. 가장 보편적인 libref 작성 방법인 LIBNAME 문을 사용하여 libref를 정의하는 방법을 보여 줍니다.

 

 

 

 

LIBNAME libref ’your-SAS-data-library’;

 

 

키워드 LIBNAME 뒤에 libref를 지정한 다음 영구 저장 위치를 지정합니다.

따옴표로 묶은 SAS 데이터 세트는 Librefs는 8자 이하여야 합니다. 문자 또는 밑줄 및 문자, 숫자 또는 밑줄만 포함합니다.

 

 

 

 

Windows: LIBNAME libref ’drive:\directory’;
UNIX: LIBNAME libref ’/home/path’;
OpenVMS: LIBNAME libref ’[userid.directory]’;
OS/390 or z/OS: LIBNAME libref ’data-set-name’;

 

 

 

 

Creating a permanent SAS data set

다음 예제에서는 영구 SAS를 생성합니다.

목련 나무에 대한 정보를 포함하는 데이터 세트로 각 나무 유형에 대해 원시 데이터 파일에는 학명, 통칭, 최대 키, 씨앗에서 심을 때 처음 피는 나이, 상록수든 낙엽수든 꽃 색깔 데이터가 있습니다.

 

 

 

M. grandiflora Southern Magnolia 80 15 E white
M. campbellii 80 20 D rose
M. liliiflora Lily Magnolia 12 4 D purple
M. soulangiana Saucer Magnolia 25 3 D pink
M. stellata Star Magnolia 10 3 D white

 

 

 

이 프로그램은 C 드라이브의 MySASLib 디렉터리를 가리키는 PLANTS라는 이름의 라이브러리를 설정합니다.

그런 다음 Mag.dat라는 파일에서 원시 데이터를 읽어 영구적인 SAS 데이터를 생성합니다.

 

 

 

 

LIBNAME plants ’c:\MySASLib’;
DATA plants.magnolia;
INFILE ’c:\MyRawData\Mag.dat’;
INPUT ScientificName $ 1-14 CommonName $ 16-32 MaximumHeight
AgeBloom Type $ Color $;
RUN;

 

 

 

 

■ Reading a permanent SAS data set

영구 SAS 데이터 세트를 사용하려면 다음을 포함할 수 있습니다.

프로그램에서 LIBNAME 문을 사용하고 2단계 이름으로 데이터 세트를 참조합니다. 

예를 들어, 나중에 돌아가서 마지막 예제에서 만든 영구 데이터 세트를 인쇄하려면 다음 문장을 사용할 수 있습니다.

 

 

 

 

LIBNAME example ’c:\MySASLib’;
PROC PRINT DATA = example.magnolia;
TITLE ’Magnolias’;
RUN;

 

 

 

 

이번에는 LIBNAME 문의 libref가 PLANTS 대신 EXAMPLE이지만 다음을 가리킵니다.

이전과 동일한 위치, C 드라이브의 MySASLib 디렉토리. 라이브러리 참조는 변경될 수 있지만 멤버 이름 MAGNOLIA는 그대로 유지됩니다.