SAS proc导出到CSV:如何添加双引号

问题描述 投票:0回答:5

新来的,所以很抱歉。 我有一个 SAS 文件,需要将其导出为 CSV,并且需要向所有字段添加双引号。 我怎样才能做到这一点? 预先感谢。

csv sas
5个回答
6
投票

从 SAS 创建 CSV 文件的方法有很多。 使用

proc export
不会将每个字段都用双引号括起来,因此最简单的方法是
%ds2csv()
宏。 这假设您有 SAS 9.2 或更高版本。 可以在这里找到它的文档:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002683390.htm

运行示例:

%ds2csv(data=sashelp.retail, runmode=b, csvfile=c:\class.csv);

产品:

"Retail sales in millions of $","DATE","YEAR","MONTH","DAY"
"$220","80Q1","1980","1","1"
"$257","80Q2","1980","4","1"
"$258","80Q3","1980","7","1"

1
投票

这是另一个使用数据的步骤

data _null_;
    file 'data_want.csv' dsd dlm = ',';
    set data_have;
    if _n_ = 1 then put @1 "variables name to input"; /* Add variable names */
    put (_all_) (~);
run;

0
投票

这是一种在包含标题的情况下获得相同结果的方法

proc contents data=sashelp.class out=vars(keep=name varnum);run;

proc sql noprint;
    select quote(strip(name)) into :vars separated by '|' from vars
    order by varnum;
quit;

data _null_;
    file 'test.txt' dsd dlm='|';
    set sashelp.class;
    if _n_ = 1 then put %sysfunc(quote(&vars.));
    put (_all_) (~);
run;

0
投票

我知道这是一个老问题,但我的 2 便士......

下面的宏不引用格式化为字符值的数值,但它很容易实现。

%macro csvQuoteChars(lib=,dset=,outPath=);

 proc contents data=&lib..&dset out=c(keep=name type) noprint;
 run;

 %let dsid = %sysfunc(open(c));
 %let nobs = %sysfunc(attrn(&dsid,nlobs));

 data _null_;
  set &lib..&dset;
  file "&outPath\&lib..&dset..csv" dsd;

  %do i=1 %to &nobs;
      %let rc = %sysfunc(fetchobs(&dsid,&i));
      %let vName = %sysfunc(getvarc(&dsid,1));
      %let vType = %sysfunc(getvarn(&dsid,2));
      %put &=vName &=vType;

      %if &vType = 2 %then %do;
          put (&vName) (~) @;
      %end;
      %else %if &vType = 1 %then %do;
          put &vName @;
      %end;

      %if &i = &nobs %then %do;
          put;
      %end;

  %end;

 run;

 %let dsid = %sysfunc(close(&dsid));

%mend csvQuoteChars;
%csvQuoteChars(lib=sashelp,dset=class,outPath=d:\temp);

0
投票

你能解释一下这一行吗 put (&vName) (~) @; 看不懂语法

如何获取带有列名称的标题行,也带有双引号

最后,我必须进行导出,其中每个缺失值都应写为“NA”

可以吗?

© www.soinside.com 2019 - 2024. All rights reserved.