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 variation sur 3 mois et 12 mois glissants


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2011
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Calcul variation sur 3 mois et 12 mois glissants
    Cher réseau,

    J'ai besoin de votre aide pour un problme qui me fatiqgue un depuis 1h.

    J'ai une table avec des montants cumulés par mois sur laquelle je souhaite calculer des variations mensuelles, sur 3 mois et sur 12 mois glissants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    data test;
      input id_clt $ annee_mois $ mois $ Montant $;
      cards;
    1 201801 1 459291,49
    1 201802 2 509454,27
    1 201803 3 509454,27
    1 201804 4 509454,27
    1 201805 5 509454,27
    1 201806 6 780035,75
    1 201807 7 780035,75
    1 201808 8 777029,17
    1 201809 9 770632,82
    1 201810 10 795594,76
    1 201811 11 791572,83
    1 201812 12 788973,34
    1 201901 1 785368,72
    1 201902 2 792321,81
    1 201903 3 792321,81
    1 201904 4 785715,40
    1 201905 5 785715,40
    1 201906 6 785715,40
    1 201907 7 777560,89
    1 201908 8 777560,89
    ;
    run;
     
    PROC SORT DATA=test; BY id_clt annee_mois; RUN;
     
    data test2; set test;
    BY id_clt annee_mois;
     
    var_mens = Montant  - lag(Montant);
    var_TRIM = Montant  - lag2(Montant );
     
    if mois =1  then var_ANN = 0;
    if mois =2  then var_ANN = var_mens;
    if mois =3  then var_ANN = var_TRIM;
    if mois =4  then var_ANN = Montant  - lag3(Montant );
    if mois =5  then var_ANN = Montant  - lag4(Montant );
    if mois =6  then var_ANN = Montant  - lag5(Montant );
    if mois =7  then var_ANN = Montant  - lag6(Montant );
    if mois =8  then var_ANN = Montant  - lag7(Montant );
    if mois =9  then var_ANN = Montant  - lag8(Montant );
    if mois =10 then var_ANN = Montant  - lag9(Montant );
    if mois =11 then var_ANN = Montant  - lag10(Montant );
    if mois =12 then var_ANN = Montant  - lag11(Montant );
     
    run;
    J'ai essayé ci-dessus mais apparemment la fonction lag ne marche dans une condition if.

    Merci beaucoup pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    mai 2011
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2011
    Messages : 677
    Points : 1 565
    Points
    1 565
    Par défaut
    Bonjour, pourriez vous nous donner un exemple de données en sortie à partir de vos données en entrée ?

    Cordialement

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2011
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bonjour, voici un exemple de sortie attendue :

    id_clt	annee_mois 	mois	Montant		      var_mens	  var_TRIM	 var_ANN
    20094	201801		1	459291,49	        .		  .		  .
    20094	201802		2	509454,27	        50162,78			  50162,78
    20094	201803		3	509454,27	        0		  50162,78  50162,78
    20094	201804		4	509454,27	        0		  0		  50162,78
    20094	201805		5	509454,27	        0		  0		  50162,78
    20094	201806		6	780035,75	        270581,48  270581,48 320744,26
    20094	201807		7	780035,75	        0		 270581,48 320744,26
    20094	201808		8	777029,17	        -3006,58	-3006,58	  317737,68
    20094	201809		9	770632,82	        -6396,35	-9402,93	  311341,33
    20094	201810		10	795594,76	         24961,94	 18565,59	  336303,27
    20094	201811		11	791572,83	         -4021,93	 20940,01	  332281,34
    20094	201812		12	788973,34	         -2599,49	-6621,42	  329681,85
    20094	201901		1	785368,72	         -3604,62	-3604,62	  .
    20094	201902		2	792321,81 	         6953,09	 3348,47	  6953,09
    20094	201903		3	792321,81	         0		 6953,09	  6953,09
    20094	201904		4	785715,40	         -6606,41	-6606,41	  346,68
    20094	201905		5	785715,40	         0		-6606,41	  346,68
    20094	201906		6	785715,40	         0		 0		  346,68
    20094	201907		7	777560,89  	        -8154,51	-8154,51	 -7807,83
    20094	201908		8	777560,89	         0		-8154,51	 -7807,83
    Cordialement

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/07/2019, 17h38
  2. Calcul / Somme sur 12 mois glissants
    Par popopo25 dans le forum Access
    Réponses: 11
    Dernier message: 06/06/2017, 17h36
  3. Calcul de moyenne sur 3 mois glissants
    Par gwirionez dans le forum SAS Base
    Réponses: 2
    Dernier message: 17/07/2014, 13h16
  4. Calcul sur 12 mois glissant
    Par LouisT dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/01/2013, 22h41
  5. [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, 21h02

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