【问题标题】:exporting in SAS multiple datasets在 SAS 中导出多个数据集
【发布时间】:2014-02-25 10:31:48
【问题描述】:

我有一组数据集,我想在 Excel 文件中输出。有没有办法快速做到这一点,而不是每次为每个数据集调用 proc export

%let MyDS = ('out.Ids', 'out.Vars', 'out.Places')

%let MyDSname = (Ids, Vars, Places)

我想创建一个宏来检查每个数据集是否存在,然后输出到 Excel 电子表格,其标签名称在相应的 MyDSname 中指定...

类似... %macro Out(MySpreadsheetName, MyDS, MyDSname);

非常感谢您的帮助

【问题讨论】:

    标签: sas


    【解决方案1】:

    假设您拥有 Access to PC Files 许可,最简单的方法(将多个数据集导出到一个工作簿)是使用 libname。

    libname mywbk excel 'c:\pathtomyexcel\excelfile.xlsx';
    
    data mywbk.nameoftab;
    set dataset;
    run;
    

    就有条件地创建它而言,您应该查看如何获得要导出的名称列表。通常,您应该有一个数据集,其中每个要导出的数据集包含一行,以及两列 - DS 名称和选项卡名称。然后,您可以将其合并到 sashelp.vtablesdictionary.tables,它们是包含当前 SAS 会话中的表列表的视图; memname 是表的名称,libname 是库的名称。然后从中创建一个宏调用:

    proc sql;
    select cats('%out(',dsname,',',tabname,')') into :calllist separated by ' '
    from joinedds;
    quit;
    
    libname ... ;
    &calllist.;
    

    【讨论】:

    • 好吧,我仍然对 memname 感到困惑,不知道如何访问它?
    • memname 是包含数据集名称的变量。您可以通过data test; set sashelp.vtable; run; 之类的方式查看它,然后在memname 上加入/合并到包含表名的数据集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2012-11-15
    相关资源
    最近更新 更多