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

时间:2017-03-17 01:08:07

标签: excel sas

我是新的SAS用户,我有一个关于将Excel文件导入SAS的问题。

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

有没有办法从这个文件夹导入excel文件,而不必每次移动PC时都重新映射到excel文件的路径?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

当然,一种选择是使用评论中指出的UNC。 UNC是一个类似于//share/folder/otherfolder/file.xlsx的路径,不依赖于驱动器映射。

但是,如果由于某种原因这不可行,你当然可以解决这个问题。如何执行此操作首先取决于您如何运行SAS。

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

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

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