BookmarkSubscribeRSS Feed

[SAS 활용 FAQ] how to delete SAS data sets

Started ‎11-17-2021 by
Modified ‎11-17-2021 by
Views 664

SAS 데이터 세트를 삭제하는 방법

 

SAS 데이터 세트는 원하는 작업 실행 후 보고서 및 기타 목적에 사용하기 위해 자산으로 보관하는 경우가 있으나 불필요한 데이터 세트로 공간을 차지하게 되는 경우가 다수이며 결국은 과거의 데이터를 삭제하기로 결정하게 됩니다. 더 이상 필요하지 않은 데이터 세트를 삭제하면 작업 중 저장 공간과 메모리를 절약 할 수 있으므로 되도록이면 정리하는 것이 좋습니다. 본 글에서는 SAS 데이터 세트를 삭제하는 몇 가지 방법에 대해 설명합니다. 경험상 가장 일반적인 방법으로서 독자분 께서는 다른 방법을 활용하셔도 괜찮습니다.

 

PROC DELETE- 신속하고 정확한 명령

 

SAS의 대부분의 작업과 마찬가지로 PRO가 존재합니다. PROC DELETE는 해당 작업을 효율적으로 수행합니다.

 

WORK.DATA1이라는 단일 데이터 세트를 삭제하려면 다음과 같이 수행합니다.

 

delete data=work.data1; run;

 

여러 개의 데이터 세트를 삭제하려면 DATA = 옵션에 추가하면 됩니다.

 

proc delete data=work.a1 work.a2 ; run;

 

예를 들어 DATA1에서 DATA5까지 순서대로 이름이 지정된 WORK에서 이름이 지정된 데이터 세트 범위를 삭제하려면 다음과 같이 수행합니다. 여기에서는 LIBRARY = 옵션을 사용하므로 DATA =에서 libname을 생략 할 수 있습니다.

 

proc delete library=work data=DATA1-DATA5; run;

 

 데이터 세트 이름에 대한 와일드 카드 콜론 목록 매칭을 지원하지 않지만 PROC DATASETS에서 이를 수행 할 수 있는 방법에 대해 확인하실 수 있습니다. PROC DELETE에는 다양한 유형과 생성 데이터 세트에 대한 여러 옵션을 지원합니다. 설명서를 참조하시기 바랍니다.

 

참고: 수년 동안 PROC DELETE는 문서화되지 않은 채 비공식적인 방법으로 전달되어 왔습니다. SAS 9.4부터는 SAS 프로그래머와 진취적인 SAS R&D 개발자의 순수한 동기로 공식적으로 문서화 되었습니다.

 

DELETE를 사용한 PROC DATASETS

 

PROC DATASETS는 모든 데이터 세트를 위한 다목적 유틸리티입니다. 이를 사용하여 속성을 복사, 이동, 수정 및 삭제할 수 있습니다.

 

WORK 라이브러리에서 A1, A2 및 A3이라는 세 개의 데이터 세트를 삭제하려면 다음과 같이 수행합니다.

 

proc datasets nolist lib=work;

 delete a1 a2 a3 ;

quit;

 

혹은 콜론 목록 또는 범위 목록 구문을 사용할 수 있습니다.

 

proc datasets nolist lib=work;

 delete a: ;    /* all data sets that begin with "A" */

 delete a1-a3;  /* or data sets in this range */

quit;

 

NOLIST 옵션을 사용했습니다. 이러한 경우 DATASETS 프로시저는 현재 SAS 라이브러리에 있는 내용에 대한 자세한 출력을 생성하지 못합니다. 기본적으로 PROC DATASETS는 번거로울 수 있으나 NOLIST 및 NODETAILS를 사용하여 출력을 제한 할 수 있습니다.

 

PROC DATASETS KILL을 사용하여 전체 라이브러리 삭제

 

SAS 라이브러리 내의 모든 데이터 세트를 삭제하려고 하는 경우 KILL 옵션을 사용할 수 있습니다.

 

/* delete all data files from WORK */

proc datasets nolist lib=work kill;

quit;

 

WORK 라이브러리에는 종종 진행중인 작업과 관련된 데이터가 포함되어 있기 때문에 가끔 임시 데이터를 위한 임시 위치에 라이브러리를 생성하며 프로그램의 해당 부분이 완료되면 삭제할 수 있습니다.

 

/* create a subfolder in WORK for my data */

options dlcreatedir;

libname scratch "%sysfunc(getoption(WORK))/scratch";

 

/* just adding some data for example purpose */

data scratch.a1 scratch.a2 scratch.a3;

 set sashelp.class;

run;

 

/* more operations with scratch data */

 

/* now clear it when ready */

proc datasets lib=scratch kill nolist;

quit;

 

PROC DATASETS SAVE 명령문을 통한 부분 삭제

 

라이브러리에서 대부분의 데이터를 삭제하고 싶지만 몇 개의 파일은 보관하고 싶다면 SAVE를 활용할 수 있습니다.

 

다음은 SAVE를 사용하여 하나의 데이터 세트만 저장할 수 있도록 수정한 상단의 KILL 예시입니다.

 

/* just adding some data for example purpose */

data scratch.a1 scratch.a2 scratch.a3;

 set sashelp.class;

run;

 

/* now delete all but A1 */

proc datasets lib=scratch nolist;

 save a1;

quit;

 

나머지를 삭제하려는 의도가 배제되어 있어서 다소 이상하게 보일 수 있지만 이 또한 작동 방식입니다. 다음은 해당 명령문의 SAS 로그입니다.

 

NOTE: Saving SCRATCH.A1 (memtype=DATA).

NOTE: Deleting SCRATCH.A2 (memtype=DATA).

NOTE: Deleting SCRATCH.A3 (memtype=DATA).

 

SAS 데이터 세트의 수명주기를 관리하기 위한 PROC DATASETS에는 더 많은 정보가 존재합니다. @MMMMIIIIKKKKEEEE 가 작성한 문서 PROC DATASETS : The Swiss Army Knife of SAS Procedures를 통해 확인하실 수 있습니다.

 

DROP TABLE을 사용하여 PROC SQL 내에서 삭제

 

마지막으로 SQL 코더를 위한 방법입니다. PROC SQL 시퀀스의 어려움에 처해 있고 일부 데이터를 정리하려면 DROP TABLE 명령문을 사용할 수 있습니다.

 

proc sql;

 drop table work.a1;

 drop table work.a2;

 drop table work.a3;

quit;

 

이는 데이터가 SAS 또는 ACCESS 엔진을 통해 액세스해야 하는 데이터베이스에 있는 경우 훨씬 더 합리적 일 수 있습니다. PROC SQL은 적절한 명령을 데이터베이스에 보내 데이터를 제거해야 합니다. 이러한 관련 데이터 유형에 사용할 수 있는 명령문은 DROP VIEW 및 DROP INDEX 등이 있습니다.

Version history
Last update:
‎11-17-2021 08:46 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