【问题标题】:How to run the same SAS program with data from different months in one program rather than doing it separately for each month?如何在一个程序中使用来自不同月份的数据运行相同的 SAS 程序,而不是每个月单独执行?
【发布时间】:2013-10-31 21:51:39
【问题描述】:

我需要使用不同月份的数据重新运行同一程序,并为每个月创建一个单独的 Excel 电子表格。在 SAS 中进行编程比单独运行每个程序更短的方法是什么?例如,在下面我从 10 月份读取数据,并在同一程序结束时将 10 月份的结果输出到 excel。我每个月都需要做同样的事情。我可以在一个 SAS 程序中执行此操作(可能使用宏)吗?谢谢。

data sourceh.trades2;
set sourceh.trades1_october08_wk1;
if time<34200000 or time>57602000 then delete;
run;

proc export data=sourceh.avesymbol        
outfile='C:\Documents and Settings\zd\My Documents\h\hdata\trades\2008\October 08 1 min       correlations.xls'           
replace; 
run;

【问题讨论】:

    标签: sas


    【解决方案1】:

    我会为此使用宏。在这里,我将您的代码封装到一个宏中,您可以使用 RunProgram(); 宏语句为每个所需的月份和年份执行该宏。

    %MACRO RunProgram(month, year);
    data sourceh.trades2;
    set sourceh.trades1_&month.&year._wk1;
    if time<34200000 or time>57602000 then delete;
    run;
    
    proc export data=sourceh.avesymbol        
    outfile="C:\Documents and Settings\zd\My Documents\h\hdata\trades\2008\&month. &year. 1 min correlations.xls"         
    replace; 
    run;
    %MEND RunProgram;
    
    
    %RunProgram(October, 08);
    %RunProgram(November, 08);
    

    【讨论】:

    • 非常感谢!我更新了程序,但它不理解 proc 导出中的宏。该程序不是创建两个以 October08 和 November08 开头的 excel 文件,而是创建一个名为 '&month.xml 的 excel 文件。 &年。 1 分钟相关性.xls'。我该如何解决这个问题?
    • 是的 - 很抱歉。如果文件目录包含宏变量,我忘记了文件目录需要在双引号(“)而不是单引号(')内。我已经编辑了代码。
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多