在特定日期之后阻止值

时间:2014-07-11 10:12:49

标签: sas

我有以下问题。

我正在尝试对我拥有的数据模型进行偏最小二乘预测。问题是我需要阻止某一行才能获得特定时间的预测。

我想要的是以下内容。 6月份,2014年5月之前的每一行都将被屏蔽(请参见下面的屏幕截图)。

enter image description here

对于五月,2014年4月之前的每一行都将被屏蔽(请参阅下面的屏幕截图)。

enter image description here

我正在考虑通过proc sql使用删除来执行此操作,但此解决方案似乎非常残酷,我希望保持我的表格完整。

问题:是否有办法在需要删除的特定日期时阻止该行?

非常感谢你能给我的任何见解,因为我以前从未这样做过,也不知道是否有办法做到这一点(我在网上找不到任何东西)。

修改:阻止的目的是使用缺失值并在2014年6月和2014年5月的第二个示例中运行此缺失月份的预测

1 个答案:

答案 0 :(得分:0)

我不确定您打算使用什么程序,但您应该可以执行以下操作。

它基于一组不同的日期构建控件数据集,包括过滤器值和构建文本数据集名称。然后从数据 null 步骤调用此数据集。

对于这种循环行为,调用execute是一个非常强大的函数,需要你构建它将传递的字符串,就好像它们是代码一样。请注意,控件集中的列名是"外部"字符串并使用||连接它。另一种选择可能是使用了相当多的宏。

proc sql;
    create table control_dates as
    select distinct 
        nuov_date, 
        put(nuov_date,mon3.)||'_results' as out_name
    from [csv_import];
quit;

data _null_;
    set control_dates;
    call execute(
        'data '||out_name||'; 
             set control_dates
                 (where=(nuov_date<'||nouv_date||')); 
         run;');
    call execute('proc [analysis proc] data='||out_name||';run;');
run;