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

问题描述:

我是一个新的SAS用户,我有一个关于将excel文件导入SAS的问题。如何在SAS中动态导入excel文件?

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

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

+1

我对SAS一无所知,但对于路径而言,您应该使用UNC。 https://www.lifewire.com/unc-universal-naming-convention-818230 –

+0

同意。在'cmd.exe'中输入'C:> net use'来查看网络驱动器字母映射到的服务器地址。 – Hugs

当然,一种选择是使用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_会告诉你什么是,并且其中的一个变量应该足够有用。