使用自定义文件名将数据从SAS导出到Excel

使用自定义文件名将数据从SAS导出到Excel,sas,filenames,export-to-excel,excel-2013,Sas,Filenames,Export To Excel,Excel 2013,我需要将数据集作为.csv文件从SAS导出到Excel 2013。但是,我需要文件名是动态的。在本例中,我需要它显示为: in_C000000_013117_65201.csv 其中,字符串“in_C000000_”将保持不变,字符串“013117_”将是当天的日期,字符串“65201”将是数据集本身的行计数 如果您能提供任何帮助,我们将不胜感激 谢谢 这是我在过去编写的一个修改过的宏,它几乎完全符合您的要求。如果要用所需格式的日期替换sysdate,也很容易: %let path = [[d

我需要将数据集作为.csv文件从SAS导出到Excel 2013。但是,我需要文件名是动态的。在本例中,我需要它显示为:

in_C000000_013117_65201.csv
其中,字符串“in_C000000_”将保持不变,字符串“013117_”将是当天的日期,字符串“65201”将是数据集本身的行计数

如果您能提供任何帮助,我们将不胜感激


谢谢

这是我在过去编写的一个修改过的宏,它几乎完全符合您的要求。如果要用所需格式的日期替换
sysdate
,也很容易:

%let path = [[desired destination]];

%macro exporter(dataset);

    proc sql noprint;
        select count(*) into: obs
        from &dataset.;
    quit;

    data temp;
        format date mmddyy6.;
        date = today();
    run;

    proc sql noprint;
        select date format mmddyy6. into: date_formatted
        from temp;
    quit;

    proc export data = &dataset.
        file = "&path.in_C000000_&date_formatted._%sysfunc(compress(&obs.)).csv"
        dbms = csv replace;
    run;

%mend exporter;

%exporter(your_dataset_here);

以以下格式生成数据集:
in_C000000_020117_50000.csv

path
应该是宏的参数,而不是全局变量。您也不需要
压缩
,因为
压缩成
应该会自动处理(至少9.3+,我不记得9.1或9.2中可能没有)。谢谢!到目前为止,这似乎对我有效。要将日期显示为013117而不是2017年1月31日,需要进行哪些更改?您只需要设置日期变量的格式。可能有一种比我在中编辑的格式更短的格式,但上面的方法很有效。