如何在SAS中dynamic导入excel文件?

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

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

有没有办法从这个文件夹中导入一个excel文件,而不必每次移动PC都重映射到excel文件的path? 感谢您的帮助。

当然有一种select是使用UNC,如评论中所述。 UNC是一个类似于//share/folder/otherfolder/file.xlsx的path,不依赖于驱动器映射。

但是,如果由于某种原因而不可行,那么您肯定可以解决这个问题。 你如何这样做首先取决于你如何运行SAS。

例如,如果您使用Enterprise Guide进行连接,则提示可能是您最好的select。 提示定义macrosvariables,macrosvariables可用于文件名(或驱动器号)。

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

如果你对SAS有完全的控制权,而且这个东西通常是有用的(不仅仅是这个程序),你可以在你的autoexec.sas中join一些东西。 如果您没有这种控制级别,或者只希望这个程序特定于此程序,则可以在两台PC上和每台PC上创build一个文件(例如,c:\ SASFiles)有一个不同的文件名/ libname /macrosvariables(适用于该PC)。 然后你在你的程序开始时%include这个文件。

最后,您可能可以使用PC名称或其他环境variables来确定您正在使用哪台机器,然后可以使用它来驱动逻辑。 例如:

 %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_会告诉你什么是,那么其中的一个variables应该足够有用。