0

我以 csv 文件的形式将我的 SAS 表导出到不同的文件夹中,以便我使用这个有效的代码与不同的程序一起使用:

PROC EXPORT data=CA_ISO_policyBYpolicy_&thestate.
outfile="&whichfolder.CA_ISO_policyBYpolicy_&thestate..csv"
dbms=dlm replace;
delimiter=",";
run;

在不同的文件夹中使用不同的程序我试图通过以下代码导入数据:

LIBNAME Home "/sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/" ;       
%let Filepath = /sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/;

%sdwlogin;
RUN;

%let thestate = OR;
%let policyyr = 2012;

/*---- ISO_Compare ----*/
data Work.CA_ISO_policyBYpolicy_&thestate.;

length Policy $10.;

infile "&Filepath/CA_ISO_policyBYpolicy_&thestate..csv" DELIMITER=','  TERMSTR=CRLF     LRECL=2500  FIRSTOBS=2  MISSOVER  DSD;

input Policy;
run;

该程序运行,但我没有得到任何数据。我缩短了变量列表以使代码更易于阅读。当我手动将数据复制并重新粘贴到不同的 csv 文件中并将其重命名为相同的“CA_ISO_policyBYpolicy_OR.csv”时,它就可以在我的程序中使用。我合并此代码的最初原因是摆脱手动过程......所以如果有人有任何提示,我将非常感激。

4

1 回答 1

0

正如 Joe 在评论中建议的那样,除非您出于其他原因需要 csv 文件,否则最好为此创建一个 SAS 数据库。

执行此操作的另一种方法proc import与您使用的方法几乎相同proc export

proc import datafile="&Filepath./CA_ISO_policyBYpolicy_&thestate..csv"
   out=Work.CA_ISO_policyBYpolicy_&thestate. dbms=dlm replace;
   delimiter=",";
   getnames=yes;  *this will create variable names from your first line;
                  *The opposite of what proc export did;
run;

我能想到的另一件事是:

 %let Filepath = /sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/;

由于正斜杠,可能会导致问题。试试看:

%let Filepath = %str(/sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/);

另外,sasdata 目录实际上是否存在于根目录中,还是您的 sas 程序所在的当前目录的子目录?如果它是当前目录,您需要丢失初始正斜杠(或在其前面放置一个 .):

%let Filepath = %str(./sasdata/sasperm2/act_cfr/fr/SJR/AmFam_vs_ISO_Compare/);  
于 2013-10-01T16:40:55.333 回答