IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Calcul de moyenne sur 3 mois glissants


Sujet :

SAS Base

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Points : 44
    Points
    44
    Par défaut Calcul de moyenne sur 3 mois glissants
    Bonjour à tous,

    Voici mon problème :
    J'ai une base de données avec les consommations de café de 1000 consommateurs de 2008 à 2014, soit 3 variables:
    - consommateurs : 1 à 1000
    - date : jour/mois/année
    - quantité de café consommée
    Le café n'est pas forcément consommé tous les jours.


    J'ai deux étapes à réaliser:
    - Calculer la consommation moyenne pour chaque consommateur par tranche de 3 mois glissants: janv/fév/mars, fév/mar/avril... mais aussi nov/dec/janv+1, dec/janv+1/fev+1.
    - Ensuite je souhaite diviser chaque consommation à celle correspondante aux 3 mois précédents. Par exemple, le consommateur 1 a consommé 200ml le 02/02/2014 => diviser 200ml par la consommation moyenne de ce consommateur entre novembre 2013 et janvier 2014.

    Je ne sais pas trop comment m'y prendre pour obtenir ces résultats de manière rapide.

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 331
    Points
    331
    Par défaut
    Bonjour,

    Je le ferai dans ce sens avec en table source la table conso ayant les variables suivantes :
    conso_id : l'identifiant du consommateur
    date : la date de consommation
    quantite : quantité de café consommé

    Dans un premier temps, agréger ta table source par consommateur et par mois :

    Le fait de positionner un format dans la procédure permet d'éviter de recalculer une variable mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc summary data = conso nway ;
       format date monyy. ;
       class conso_id date;
       var quantite ;
       output out = conso_by_id_month (drop = _type_ _freq_ ) sum = quantite_by_id_month;
    run ;
    Puis utiliser la fonction LAG pour permettre de lire les valeurs des observations précédents pour le calcul des 3 mois glissants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data conso_by_id_month_glissant ;
       set conso_by_id_month ;
       by conso_id date ;
       moyenne = mean( quantite_by_id_month,
                       lag1(quantite_by_id_month),
                       lag2(quantite_by_id_month)) ;
    run ;
    Puis effectuer une jointure avec la tables source en utilisant la fonction INTNX pour se positionner sur le mois suivant et récupérer la moyenne des mois glissants :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    proc sql ;
       create table finale as
       select a.conso_id ,
              a.date,
              a.conso,
              b.moyenne,
              divide(quantite, moyenne) as moyenne_mois_glissant
       from conso a inner join conso_by_id_month_glissant b
       on a.conso_id = b.conso_id and
             intnx('MONTH',a.date,1) = b.date ;
    quit ;
    A adapter avec tes données.
    Timarsu

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup de ton aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul sur 12 mois glissant
    Par LouisT dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/01/2013, 21h41
  2. [XL-2003] calculer des valeurs décalées (sur des mois glissants)
    Par filouhse dans le forum Excel
    Réponses: 1
    Dernier message: 19/05/2010, 20h02
  3. [8.5] calcul de moyenne sur une durée
    Par rihiveli dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 27/04/2007, 11h06
  4. Réponses: 3
    Dernier message: 19/12/2006, 17h43
  5. Comment calculer des moyennes sur des nombres positifs
    Par robertetgorgette dans le forum Access
    Réponses: 2
    Dernier message: 20/07/2006, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo