2017-06-12 44 views
-1

我正在使用adventureworks数据集。SAS试图获得从订单到发货日期的差异

寻找方法来计算平均需要多长时间ADW才能在订单日期和装运日期之间交付产品。

format sas date9。

例如为:

orderdate    shipdate 
01JUL2005:00:00:00 08JUL2005:00:00:00 
+0

请显示您尝试过的代码,并描述您收到的任何错误消息或描述您为什么不满意结果。它也可能有助于显示一些样本记录。 – Quentin

+0

data productdate; set productdate; format = orderdate shipdate date9。 productdelivery = orderdate-shipdate; 跑;错误388-185:期待算术运算符。 错误76-322:语法错误,语句将被忽略。 72 productdelivery = orderdate-shipdate; 73跑; –

回答

0

这里有一个方法可能会有所帮助。 SAS功能intck()非常有用!

/* Generate a dataset as described. */ 
    data have; 
     do id=1 to 10000; 
      orderdate = today()-(ceil(ranuni(id)*1000)); 
      shipdate = orderdate + ceil(ranuni(id)*10); 
      output; 
     end; 
     format orderdate shipdate date9.; 
    run; 

/* Use intck() to count the number of days or weekdays between order and delivery dates */ 
    data want; 
     set have; 
     weekdays_passed = intck('weekday7w',orderdate,shipdate); 
     abs_days_passed = intck('day',orderdate,shipdate); 
    run; 

/* Two ways to obtain average delivery time in days. */ 
/*1*/ 
    proc univariate data=want; 
     var weekdays_passed 
      abs_days_passed; 
    run; 
/*2*/ 
    proc sql; 
     select avg(weekdays_passed) as avg_weekdays_passed, 
       avg(abs_days_passed) as avg_abs_days_passed 
     from want; 
    quit;