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

Forum général SAS Discussion :

SAS calcul itératif


Sujet :

Forum général SAS

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut SAS calcul itératif
    Bonjour,

    Je voudrais reproduire sous SAS un calcul très simple sous Excel, mais que je n'arrive pas à coder en SAS:

    A B C D E F G H I
    F640013 31/12/2019 251 522 1 251 522
    F640013 08/06/2020 RDES -5 688 250 338 2 -5 714 245 807
    F640013 10/07/2020 246 654 RDES -5 686 246 654 3 -5 667 240 141
    F640013 14/09/2020 RDES -11 393 248 570 4 -11 007 229 134
    F640013 31/12/2020 251 770 5 0 229 134

    Les colonnes A à G sont déjà présentes dans ma base. Mon but est de calculer H et I.
    Ce qui me pose problème est que H dépend de I de le ligne précédente , et que I dépend de H et I (-1).
    Autrement dit, il faut calculer I(1), puis H(2), puis I(2), puis H(3), puis I(3) ,etc ...

    Les formules exactes sont les suivantes :
    • H5=SI(G5=1;"";SI(E5="";0;SI(E5>0;E5;I4*(E5/F5))))
    • I5=SI(G5=1;SI(D5="";C5;F5);I4+H5)



    C'est simplissime sous Excel, mais je n'arrive pas à trouver de solution SIMPLE sous SAS.
    Auriez vous une idée ?
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Bénédicte.
    Voilà un code qui fonctionne. La clé est RETAIN.
    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
    DATA work.benedicte ;
      INFILE DATALINES DSD DLM=";" MISSOVER ;
      INPUT A :$10. B :$10. 
            C D $ E F G ;
    DATALINES4 ;
    F640013 ;31/12/2019 ;251522 ;;;;1 ;;251522
    F640013 ;08/06/2020 ;;RDES ;-5688 ;250338 ;2 ;-5714 ;245807
    F640013 ;10/07/2020 ;246654 ;RDES ;-5686 ;246654 ;3 ;-5667 ;240141
    F640013 ;14/09/2020 ;;RDES ;-11393 ;248570 ;4 ;-11007 ;229134
    F640013 ;31/12/2020 ;251770 ;;;;5 ;0 ;229 134
    ;;;;
    RUN ;
     
    DATA work.benedicte ;
      SET work.benedicte ;
      FORMAT h i NLNUM15. ;
      RETAIN i ;
      IF g=1 THEN DO ;
               h = . ;
               i = COALESCE(C,F) ;
      END ;
      ELSE DO ;
         IF MISSING(e) THEN h = 0 ;
         ELSE IF e > 0 THEN h = 0 ;
         ELSE               h = i*e/f ;
         i = i+h ;
      END ;
    RUN ;
    PS : c'est plus simple pour répondre quand la personne qui pose la question poste de quoi créer les données plutôt qu'une image des données.
    Bon courage.
    Olivier

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Mars 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci !
    Vous avez fait en quelques lignes ce que j'ai codé en une page avec des macros qui prennent un temps fou !

Discussions similaires

  1. Calcul itératif et affichage
    Par coolpix77 dans le forum GUI
    Réponses: 6
    Dernier message: 04/09/2014, 10h16
  2. [Lazarus] Runtime error 207 sur calcul itératif
    Par christophe D dans le forum Lazarus
    Réponses: 4
    Dernier message: 23/06/2014, 15h08
  3. Besoin de faire un calcul itératif enfin je crois
    Par nap75 dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 31/10/2012, 01h26
  4. API schneider : Calcul itératif sur flottants
    Par bendangers dans le forum Automation
    Réponses: 1
    Dernier message: 31/10/2009, 18h13

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