我以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”时,它在我的程序中可用。我合并这段代码的最初理由是摆脱手动过程...所以如果有人有任何提示我会非常感激。
答案 0 :(得分: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/;
由于forward slash.尝试它,可能会导致问题:
%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/);