Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 比较SAS中两个不同日期的列中的实例数_Date_Sas_Compare_Proc - Fatal编程技术网

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

Date 比较SAS中两个不同日期的列中的实例数,date,sas,compare,proc,Date,Sas,Compare,Proc,我有以下数据集(项目),其中包含任何日期的交易以及下一个工作日支付的金额 对于费率为>5的id,下一个工作日为每个id支付的金额为10美元 我的任务是比较rate>5与下一个工作日支付的金额一致的实例数量(这将有一个标准code 121) 例如,2017年4月14日,有四个案例的费率>5——金额$40(4*10)在2017年4月17日支付` Date id rate code batch 4/14/2017 1 12 100 A1 4/14/2017 1

我有以下数据集(
项目
),其中包含任何日期的交易以及下一个工作日支付的金额

对于
费率为
>5的id,下一个工作日为每个id支付的金额为10美元

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

例如,2017年4月14日,有四个案例的
费率>5
——金额
$40(4*10)
在2017年4月17日支付`

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 
我的代码

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;
这并没有产生预期的结果,我面临的挑战是检查交易日期(
2017年4月14日
2017年4月20日
)和下一个营业日日期(
2017年4月17日
2017年4月21日


感谢您的帮助。

这里的延迟功能会起作用。因为我们可以使用滞后值来创建我们想要的条件,而不必使用rate>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;
希望这有帮助