有效地将SAS数据集转换为CSV

Adn*_*nan 20 csv sas

谁能告诉我以编程方式将SAS数据集转换为CSV文件的最快方法是什么.我知道我可以使用数据步骤并输出到文件等.但这是唯一的方法吗?

谢谢,阿德南.

rko*_*ann 29

something along these lines?

proc export data=sashelp.class
    outfile='c:\temp\sashelp class.csv'
    dbms=csv
    replace;
run;
Run Code Online (Sandbox Code Playgroud)

  • 根据日志,proc export生成一个数据null步骤来写出文本文件.所以我猜想从一开始就使用数据步骤在cpu时间方面会更有效率.数据步骤可以让您更好地控制输出. (4认同)

小智 11

5种不同的方法来创建SAS数据集的.CSV文件.

参考http://studysas.blogspot.com/2009/02/how-to-create-comma-separated-file-csv.html


Ann*_*nna 6

这里的答案已经解决了创建csv的多种方法,但不一定是这些方法的效率。我创建了一个temp包含100,000行和五列的示例数据集(),以测试和比较将sas数据集导出到名为的csv的方法temp.csv


第一种方法:导出过程。运行时间:0.43秒。

PROC EXPORT data=temp 
     outfile="temp.csv" dbms=csv replace;
Run Code Online (Sandbox Code Playgroud)

选择其他选项时,运行时间短且具有开箱即用的灵活性。话虽如此,它并不是最适合定制的产品


第二种方法:带打印程序的ODS。运行时间:14.09秒。

ODS csv file="temp.csv";
PROC PRINT data=temp noobs;
RUN;
ods csv close;
Run Code Online (Sandbox Code Playgroud)

尽管存在一些特殊用例,但对于大多数用例,此方法是这三种方法中最差的一种。这对于以前编写的过程的临时输出非常有用,尤其是如果您希望输出保留在lst文件中(如果它不太大)。当您想将另一个过程(例如,复杂的过程tabulate)转换为文件而无需进一步操作时,它也可能很有用。如果不需要在第一个文件中打印输出,请关闭列表(ods listing close),否则将花费更长的时间。


第三种方法:File Statement。运行时间:0.06秒。

DATA _null_;
    FILE "temp.csv ";
    SET temp;
    put (_all_) (',');
RUN;
Run Code Online (Sandbox Code Playgroud)

尽管此方法的性能还不错,但它并不直观且令人困惑。但是,如上所述,您将对输出有更多的控制,并且它具有所有输出中最快的运行时间。

  • 警告:数据_null_方法不会在.csv的第一行中输出变量名称,这可能是一个问题。 (2认同)