4

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

4

2 回答 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 或转到

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

于 2015-02-04T17:36:03.573 回答