繁体   English   中英

如何在SAS中动态导入Excel文件?

[英]How to dynamically import excel files in SAS?

我是SAS新用户,对将excel文件导入SAS有疑问。

我的共享驱动器中有一个excel文件,该文件在PC上的映射方式不同。 (路径在一台PC上标记为S驱动器,同一路径在另一台PC上标记为Y驱动器)。 每当我更换PC并运行SAS程序时,通常都无法导入它,因为我没有重新映射excel文件。

有没有一种方法可以从该文件夹导入excel文件,而不必每次移动PC时都重新映射到excel文件的路径? 感谢您的帮助。

当然,一种选择是使用如注释中所述的UNC。 UNC是类似于//share/folder/otherfolder/file.xlsx的路径,并且不依赖于驱动器映射。

但是,如果由于某种原因这不可行,您当然可以解决此问题。 这样做的方式首先取决于您如何运行SAS。

例如,如果您使用企业指南进行连接,则提示可能是最好的选择。 提示定义宏变量,并且宏变量可用于文件名(或驱动器号)。

如果使用其他方法,各种形式的提示可能仍然可用,但是您可能会发现创建定义文件名(或libname)的本地文件甚至将驱动器号存储在宏变量中更容易。

如果您完全控制SAS,并且这通常是有用的(不仅限于此程序),则可以将某些内容放入autoexec.sas中 如果您没有该级别的控制,或者您只想将此特定于此程序,则可以在两台PC以及每台PC上创建一个位于同一位置的文件(例如c:\\ SASFiles)。具有不同的文件名/库名/宏变量(适用于该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_会告诉您什么,其中一个变量应该足够有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM