2017-03-17 2 views
0

저는 새로운 SAS 사용자입니다. SAS로 파일 가져 오기와 관련하여 질문이 있습니다.SAS에서 Excel 파일을 동적으로 가져 오는 방법은 무엇입니까?

내 공유 드라이브에 내 PC에 다른 방식으로 매핑되는 Excel 파일이 있습니다. (경로는 한 대의 PC에서 S 드라이브로 표시되며 다른 드라이브에서는 Y 드라이브로 레이블이 지정됩니다). PC를 변경하고 SAS 프로그램을 실행할 때마다 Excel 파일을 다시 매핑하지 않았기 때문에 일반적으로 가져올 수 없습니다.

PC를 이동할 때마다 엑셀 파일의 경로를 다시 매핑하지 않고이 폴더에서 Excel 파일을 가져 오는 방법이 있습니까? 도와 주셔서 감사합니다.

+1

나는 SAS에 대해 아무것도 몰라요.하지만 경로에 관해서는 대신 UNC를 사용해야합니다. https://www.lifewire.com/unc-universal-naming-convention-818230 –

+0

동의. 'cmd.exe'에'C :> net use'라고 입력하면 네트워크 드라이브 문자가 어떤 서버 주소인지 알 수 있습니다. – Hugs

답변

1

물론 한 가지 옵션은 주석에 언급 된대로 UNC를 사용하는 것입니다. UNC는 //share/folder/otherfolder/file.xlsx과 비슷한 모양이며 드라이브 매핑에 의존하지 않습니다.

그러나 어떤 이유로 든 가능하지 않은 경우 확실하게 해결할 수 있습니다. 어떻게 그렇게하는지는 먼저 SAS를 실행하는 방법에 달려 있습니다.

예를 들어 기업용 가이드를 사용하여 연결하는 경우, 아마도 prompt이 가장 좋습니다. 프롬프트는 매크로 변수를 정의하고 매크로 변수는 파일 이름 (또는 드라이브 문자)으로 사용될 수 있습니다.

다른 방법을 사용하는 경우에도 다양한 양식의 프롬프트를 계속 사용할 수 있지만 파일 이름 (또는 libname)을 정의하는 로컬 파일을 만들거나 매크로에 드라이브 문자를 저장하는 것이 더 쉽습니다 변하기 쉬운.

SAS를 완벽하게 제어 할 수 있는데 이는 일반적으로 유용합니다 (이 프로그램뿐만 아니라). autoexec.sas에 뭔가를 넣을 수 있습니다. 해당 수준의 제어가 없거나이 프로그램에만 해당되도록하려면 양쪽 PC 및 각 PC에서 같은 위치 (예 : c : \ SASFiles)에있는 파일을 만들 수 있습니다 다른 파일 이름/libname/매크로 변수 (해당 PC에 적합한 변수)가 있어야합니다. 그런 다음 프로그램 시작시 해당 파일 %include을 보냅니다.

마지막으로 PC 이름이나 다른 환경 변수를 사용하여 현재 사용중인 컴퓨터를 결정한 다음 논리를 사용할 수 있습니다. 예를 들어 :

%macro define_path; 
    %global path_letter; 
    %if &syshostname = 55PC1010G %then %do; 
    %let path_letter=P; 
    %end; 
    %else %let path_letter=Y; 
%mend define_path; 
%define_path; 
%put &=path_letter; 

당신은 값이 무엇인지보기 위해 각 시스템에 %put &=syshostname로 할 것입니다,하지만 알아낼 정도로 쉬워야한다. 어떤 이유로 든 &syshostname이 정의되지 않은 경우 %put _automatic_이 무엇인지 알려주고 변수 중 하나가 충분히 유용 할 것입니다.

관련 문제