2017-06-12 6 views
-1

J'utilise le jeu de données adventureworks.SAS essayant d'obtenir la différence en jours de orderdate à shipdate

Vous cherchez des méthodes pour calculer en moyenne combien de temps faut-il à ADW pour livrer les produits entre la date de commande et la date d'expédition.

format date s9.

.: par exemple

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

Veuillez indiquer quel code vous avez essayé, et décrivez les messages d'erreur que vous avez reçus ou décrivez pourquoi vous n'êtes pas satisfait des résultats. Cela pourrait aussi aider à montrer quelques exemples d'enregistrements. – Quentin

+0

datadate de données; set productdate; format = orderdate date d'expédition9 .; productdelivery = orderdate-shipdate; course; ERREUR 388-185: Attendre un opérateur arithmétique. ERREUR 76-322: Erreur de syntaxe, instruction sera ignorée. 72 productdelivery = orderdate-shipdate; 73 course; –

Répondre

0

Voilà une approche qui pourrait aider. La fonction SAS intck() est très utile!

/* 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;