比较SAS中两个不同日期的列中的实例数



我有以下数据集(items(,并在下一个工作日支付的任何日期和金额。

下一个工作日支付的每个ID的金额为10美元的ID,其rate>5

我的任务是比较rate > 5与下一个工作日支付的金额一致的实例数(这将具有标准的code 121(

例如,4/14/2017' - The amount上有四个实例,rate > 5 $ 40(4*10(is paid on 4/17/2017`

Date       id  rate code    batch
4/14/2017   1   12  100     A1
4/14/2017   1    2  101     A1
4/14/2017   1   13  101     A1
4/14/2017   1   10  100     A1
4/14/2017   1   10  100     A1
4/17/2017   1   40  121 
4/20/2017   2   12  100     A1
4/20/2017   2   2   101     A1
4/20/2017   2   3   101     A1
4/20/2017   2   10  100     A1
4/20/2017   2   10  100     A1
4/21/2017   2   30  121 

My code

proc sql;
   create table items2 as select 
     count(id) as id_count,
     (case when code='121' then rate/10 else 0 end) as rate_count
    from items
    group by date,id;
quit;

这尚未产生所需的结果,我在这里面临的挑战是检查交易日期(4/14/20174/20/2017(和下一个工作日日期(4/17/20174/21/2017(。

感谢您的帮助。

滞后函数将在这里解决问题。因为我们可以使用滞后值来创建所需的条件,而不必使用速率> 5条件。

这是解决方案: -

Data items;
set items;
Lag_dt=LAG(Date);
Lag_id=LAG(id);
Lag_rate=LAG(rate);
if ((id=lag_id) and (code=121) and (Date>lag_dt)) then rate_count=(rate/lag_rate);
else rate_count=0;
Drop lag_dt lag_id lag_rate;
run;

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新