SAS数据集中的输出分隔文件,没有显式PUT

时间:2016-01-07 21:16:39

标签: sas

我习惯于R写出data.frame就像write.csv()一样简单,但是在SAS中你必须指定想要输出数据集时要写出的每一列。

如何用SAS数据集中的每一列写出分隔文件,包括标题?

一个好的设置是数据集SASHELP.BUY作为例子。

2 个答案:

答案 0 :(得分:1)

正如data _null_所述,PROC EXPORT是对此的简单解决方案,非常等同于write.csv(就像PROC IMPORT非常等同于read.csv)。

proc export data=sashelp.class outfile="c:\temp\test.csv" dbms=csv replace;
run;

当然,通过更改dbms可以生成CSV,制表符分隔符,Excel等。

答案 1 :(得分:-1)

我有一个宏观,我多年来一直珍惜这一点。可能可以抽象一点来接受扩展和分隔符类型......但是你明白了。

脚本:

%MACRO DLM_DUMP(DSNAME, SASLB);

  PROC SQL;
  SELECT CATS(NAME) INTO :NAME 
  SEPARATED BY ',' 
  FROM DICTIONARY.COLUMNS 
  WHERE LIBNAME="&SASLB" AND MEMNAME="&DSNAME";
  QUIT;

  DATA _NULL_;
    SET &SASLB..&DSNAME;
    FILE "&DSNAME..csv" DSD DLM=",";
    IF _N_ = 1 THEN PUT "&NAME";
    PUT (_all_) (&);
  RUN;

%MEND;

%DLM_DUMP(BUY,SASHELP);

结果:

$ head -4 BUY.csv 
DATE,AMOUNT
01JAN1996,-110000
01JAN1997,-1000
01JAN1998,-1000