【问题标题】:Mass Convert Multiple SAS datasets into CSV files将多个 SAS 数据集批量转换为 CSV 文件
【发布时间】:2013-06-21 21:14:15
【问题描述】:

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

【问题讨论】:

  • 这是一个普遍的问题,你能说得更具体点吗?
  • 对我来说似乎很具体(考虑到这是一个 SAS 问题)。

标签: csv sas sas-macro


【解决方案1】:

这相当简单,取决于您是否有一些合理的方法可以在代码中识别它们。

这是一个简单的答案:

%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 导出调用及其开销。

【讨论】:

    【解决方案2】:

    有一个名为 SAS2SPSS 的应用程序,它使用 SPSS 转换将它们转换为 spss 文件,然后可以将其转换为几乎任何其他格式,excel、csv、xml 等。您可以谷歌 SAS2SPSS 或转到

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

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多