我习惯于R写出data.frame就像write.csv()一样简单,但是在SAS中你必须指定想要输出数据集时要写出的每一列。
如何用SAS数据集中的每一列写出分隔文件,包括标题?
一个好的设置是数据集SASHELP.BUY作为例子。
答案 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