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을 통해 오픈 소스 코드를 실행합니다.
SAS 내에서 R을 사용하려면 R 언어 문을 활성화해야 합니다.
컴퓨터에서 RLANG이 활성화되어 있는지 확인하려면 아래의 코드를 실행하고 RLANG에 대한 옵션이 켜져 있는지 OPTIONS 프로시저에 요청할 수 있습니다.
아래의 코드를 실행해서 SAS와 R 연동을 확인할 수 있습니다.
proc options option=rlang;
run;
SAS에서 R을 사용하려면 아래의 4가지 서브루틴을 사용합니다.
EXPORTDATASETTOR
EXPORTMATRIXTOR
IMPORTMATRIXFROMR
MPORTDATASETFROMR
첫 번째 서브루틴은 EXPORTDATASETTOR입니다.
이름에서 예상한 대로 아래의 구문을 사용하여 SAS 데이터 세트를 R 데이터 프레임으로 변환하여 R로 내보냅니다.
CALL EXPORTDATASETTOR(“SAS-data-set", “R-data-frame");
위의 syntax에서 첫 번째 인수는 SAS 데이터 세트이고 두 번째는 코드에서 참조할 R 데이터 프레임입니다. EXPORTDATASETTOR는 SAS 데이터 세트 변수를 R 데이터 프레임의 열 이름으로 내보낼 수 있습니다.
SUBMIT / R;
R statements
ENDSUBMIT;
SAS에 R 코드를 사용하기 위해서는 Submit 블록을 사용하고 Submit 문의 슬래시 후 다음 구문에 표시된 것처럼 R 옵션을 사용합니다. SUBMIT - ENDSUBMIT 코드를 사용하면 SAS가 이 코드를 R에 직접 제출하도록 지시합니다. SUBMIT - ENDSUBMIT 코드를 사용하지 않으면 SAS 코드인 것처럼 실행을 시도합니다.
imlMatrix = {0 1, 1 2, 3 5, 8 13};
call ExportMatrixToR(imlMatrix,"rmatrix");
submit / R;
print(rmatrix)
endsubmit;
위의 코드를 보면 4x2 행렬을 만들고, 그 행렬을 R로 내보내고, 그 행렬에 이름을 붙혔습니다.
모든 R 명령줄 출력이 자동으로 SAS로 반환되고 결과 뷰어에 표시됩니다. 형식은 R과 일치합니다.
R의 결과를 SAS로 다시 가져오기 위해서는IMPORTMATRIXFROMR 하위 루틴을 사용하여 R 개체를 다음 구문을 사용하여 선택한 새 IML 매트릭스 이름으로 가져올 수 있습니다.
CALL IMPORTMATRIXFROMR(IML-matrix, "R-object");
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를 사용하여 적절한 하위 루틴을 사용하여 해당 행렬을 가져옵니다.
CALL IMPORTDATASETFROMR("SAS-data-set", "R-object");
IMPORTDATASETFROMR 서브루틴을 사용하여 R 데이터 프레임을 SAS 데이터 세트로 반환할 수 있습니다.
SAS 데이터 세트의 이름은 원하는 대로 지정할 수 있습니다. 이 환경에서 데이터 세트로 작업할 때 R 데이터 프레임의 column 이름은 SAS 데이터 세트 변수 이름으로 반환되기 때문에 이름을 바꿀 필요가 없습니다.
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.