我是新的SAS用户,我有一个关于将Excel文件导入SAS的问题。
我的共享驱动器中有一个excel文件,它在我的电脑上的映射方式不同。 (该路径在一台PC上标记为S驱动器,同一路径在另一台PC上标记为Y驱动器)。每当我更换我的PC并运行我的SAS程序时,它通常都无法导入它,因为我没有重新映射excel文件。
有没有办法从这个文件夹导入excel文件,而不必每次移动PC时都重新映射到excel文件的路径?谢谢你的帮助。
答案 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_
将告诉您什么是,并且其中一个变量应该足够有用。