如何在SAS中动态导入excel文件?
我是一个新的SAS用户,我有一个关于将excel文件导入SAS的问题。如何在SAS中动态导入excel文件?
我在我的共享驱动器中有一个excel文件,它在我的电脑上有不同的映射。 (该路径在一台PC上标记为S驱动器,并且在另一台PC上标记为Y驱动器的路径相同)。每当我更换我的电脑并运行我的SAS程序时,通常无法导入它,因为我没有重新映射excel文件。
有没有办法从这个文件夹中导入一个excel文件,而不必在每次移动PC时重新映射到excel文件的路径?感谢您的帮助。
当然,一种选择是使用UNC,如注释中所述。 UNC是一条类似于//share/folder/otherfolder/file.xlsx
的路径,并且不依赖于驱动器映射。
但是,如果由于某种原因不可行,您肯定可以解决这个问题。你如何这样做首先取决于你如何运行SAS。
如果您使用Enterprise Guide进行连接,例如,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_
会告诉你什么是,并且其中的一个变量应该足够有用。
我对SAS一无所知,但对于路径而言,您应该使用UNC。 https://www.lifewire.com/unc-universal-naming-convention-818230 –
同意。在'cmd.exe'中输入'C:> net use'来查看网络驱动器字母映射到的服务器地址。 – Hugs