BookmarkSubscribeRSS Feed

[SAS 활용 노하우] SAS에서 R 활용하기

Started ‎06-19-2022 by
Modified ‎06-19-2022 by
Views 1,166

 

R은 모델도 만들 수 있는 오픈 소스 소프트웨어로서, SAS 스크립트에 오픈 소스를 사용할 수 있습니다.

SAS에서 R로 작업하는 것은 쉽운 편에 속합니다.

SAS는 두 언어 간의 원활한 인터페이스를 제공합니다.

R 스튜디오에 있는 것처럼 SAS 코드 편집기에서 직접 R 코드를 작성하고 코드를 R로 보내고 실행할 수 있습니다. 또한, R에서 분석하고 결과를 반환합니다.

SAS와 R 사이에서 코드와 데이터를 앞뒤로 이동하는 데 사용해야 하는 서브루틴을 SAS 스크립트 내에서 자유롭게 R 코드를 작성하여 오픈 소스 소프트웨어로 보낼 수 있음을 알 수 있습니다.

R에서 사용해 보고 싶은 새로운 패키지가 있다면 SAS에서 직접 사용할 수 있는 인터페이스를 제공합니다. 모든 알고리즘은 데이터에 의존하기 때문에 방법을 비교할 수도 있습니다.

SAS에서 R로 작업하는 가장 쉬운 방법은 대화형 매트릭스 언어(Interactive matrix language)를 사용하는 것으로 오픈 소스 코드를 직접 작성할 수 있습니다.

첫번째 SUBMITBLOCK에서 R 옵션으로 코드를 작성할 수 있습니다 . 두 번째 방법은 Base SAS의 DATA Step을 통해 오픈 소스 코드를 실행합니다.

 

 

 

Calling SAS from IML

 

■ Readying Your Machine to Call R

 

SAS 내에서 R을 사용하려면 R 언어 문을 활성화해야 합니다.

컴퓨터에서 RLANG이 활성화되어 있는지 확인하려면 아래의 코드를 실행하고 RLANG에 대한 옵션이 켜져 있는지 OPTIONS 프로시저에 요청할 수 있습니다.

아래의 코드를 실행해서 SAS와 R 연동을 확인할 수 있습니다.

 

 

proc options option=rlang;
run;

 

 

 ■ Subroutine

 

SAS에서 R을 사용하려면 아래의 4가지 서브루틴을 사용합니다.

  • EXPORTDATASETTOR

  • EXPORTMATRIXTOR

  • IMPORTMATRIXFROMR

  • MPORTDATASETFROMR

 

 

 

 ■ Exporting SAS Data Sets

 

첫 번째 서브루틴은 EXPORTDATASETTOR입니다.

이름에서 예상한 대로 아래의 구문을 사용하여 SAS 데이터 세트를 R 데이터 프레임으로 변환하여 R로 내보냅니다.

 

 

CALL EXPORTDATASETTOR(“SAS-data-set", “R-data-frame");

 

위의 syntax에서 첫 번째 인수는 SAS 데이터 세트이고 두 번째는 코드에서 참조할 R 데이터 프레임입니다. EXPORTDATASETTOR는 SAS 데이터 세트 변수를 R 데이터 프레임의 열 이름으로 내보낼 수 있습니다.

 

 

 

 ■ Submitting R syntax

 

 

SUBMIT / R;
R statements
ENDSUBMIT;

 

 SAS에 R 코드를 사용하기 위해서는 Submit 블록을 사용하고 Submit 문의 슬래시 후 다음 구문에 표시된 것처럼 R 옵션을 사용합니다. SUBMIT - ENDSUBMIT 코드를 사용하면 SAS가 이 코드를 R에 직접 제출하도록 지시합니다. SUBMIT - ENDSUBMIT 코드를 사용하지 않으면 SAS 코드인 것처럼 실행을 시도합니다.

 

 

 Submit R Code Example

 

 

imlMatrix = {0 1, 1 2, 3 5, 8 13};
call ExportMatrixToR(imlMatrix,"rmatrix");
submit / R;
print(rmatrix)
endsubmit;

 

 image.png

 

 

 

 

위의 코드를 보면 4x2 행렬을 만들고, 그 행렬을 R로 내보내고, 그 행렬에 이름을 붙혔습니다.

모든 R 명령줄 출력이 자동으로 SAS로 반환되고 결과 뷰어에 표시됩니다. 형식은 R과 일치합니다.

 

 

 

 

 Importing R Objects into IML Matrics

 

 R의 결과를 SAS로 다시 가져오기 위해서는IMPORTMATRIXFROMR 하위 루틴을 사용하여 R 개체를 다음 구문을 사용하여 선택한 새 IML 매트릭스 이름으로 가져올 수 있습니다.

 

 

CALL IMPORTMATRIXFROMR(IML-matrix, "R-object");

 

 

 ■ SAS to R and Back

 

 

imlMatrix = {0 1, 1 2, 3 5, 8 13};
call ExportMatrixToR(imlMatrix,"rmatrix");
submit / R;
rmatrix = rmatrix + 49
endsubmit;
call ImportMatrixFromR(NewMatrix,"rmatrix");
print NewMatrix;

 

 

 

위에서는 imlMatrix 라는 4x2 매트릭스가 있고, 이 행렬을 R로 내보낸다.

rmatrix라는 이름으로 코드를 작성하면 해당 R행렬의 모든 요소에 49를 더할(add) 수 있습니다.

R에서 새 IML 행렬 이름인 NewMatrix를 사용하여 적절한 하위 루틴을 사용하여 해당 행렬을 가져옵니다.

 

 

 image (1).png

 

 

 

 

 Importing R Objects into SAS Data Sets

 

CALL IMPORTDATASETFROMR("SAS-data-set", "R-object");

 

 

IMPORTDATASETFROMR 서브루틴을 사용하여 R 데이터 프레임을 SAS 데이터 세트로 반환할 수 있습니다.

SAS 데이터 세트의 이름은 원하는 대로 지정할 수 있습니다. 이 환경에서 데이터 세트로 작업할 때 R 데이터 프레임의 column 이름은 SAS 데이터 세트 변수 이름으로 반환되기 때문에 이름을 바꿀 필요가 없습니다.

Version history
Last update:
‎06-19-2022 06:17 AM
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