将多个SAS数据集转换为CSV文件

时间:2013-06-21 21:14:15

标签: csv sas sas-macro

我在一个文件夹中有大约720个SAS数据集(配有720个SAS索引文件“.sas7bdnx”),我想将其转换为CSV文件。我知道如何使用proc导出一次转换一个,但是在一个SAS程序中进行所有转换的有效方法是什么?所有数据集都存储在本地unix服务器上。

2 个答案:

答案 0 :(得分:3)

这很简单,取决于你有一些合理的方法在代码中识别它们。

这是一个简单的答案:

%macro makeCSV(dataset=);
proc export data=&dataset. file="&dataset..csv" dbms=csv replace;
run;
*modify export if needed;
%mend makeCSV;

proc sql;
  select cats('%makeCSV(dataset=',memname,')') into :makeCSVlist separated by ' '
    from dictionary.tables
    where libname='YOURLIB' and memname like 'FORCSV';
quit;
*or whatever logic identifies these 720 or whatnot datasets;
&makeCSVlist; *actually runs the macro calls;

现在,这可能相当慢,但它应该有效。更快的是没有720个数据集,而是一个数据集,并使用FILEVAR =选项在数据步骤中写出代码。如果你有大量的变量(因为你必须编写一个put语句),这会变得有点困难,但即便如此,你也可以生成类似于我刚才使用dictionary.columns的代码。这仍然会产生720个CSV,但速度要快得多,因为它避免了720 proc导出调用及其开销。

答案 1 :(得分:0)

有一个名为SAS2SPSS的appilcation,它使用SPSS转换来制作spss文件,然后可以将其转换为几乎任何其他格式,excel,csv,xml等。您可以只使用Google SAS2SPSS或转到

http://the-chronicon.blogspot.com/p/sas2spss.html