我想将其转换为 CSV 文件的单个文件夹中有大约 720 个 SAS 数据集(配备 720 个 SAS 索引文件“.sas7bdnx”)。我知道如何使用 proc export 一次转换一个,但是有什么有效的方法可以在一个 SAS 程序中进行所有转换?所有数据集都存储在本地 unix 服务器上。
问问题
2771 次
2 回答
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 导出调用及其开销。
于 2013-06-21T21:44:53.743 回答
0
有一个名为 SAS2SPSS 的应用程序,它使用 SPSS 转换将它们制作为 spss 文件,然后可以将其转换为几乎任何其他格式,excel、csv、xml 等。您可以只使用 Google SAS2SPSS 或转到
于 2015-02-04T17:36:03.573 回答