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 :

Option Last, group by


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Points : 19
    Points
    19
    Par défaut Option Last, group by
    Bonjour,

    Sauriez vous comment trouver ma colonne CT (en rouge) selon la condition ci-dessous :

    C-à-d, je souhaite récupérer pour ma ligne "Champ" = Cree de chaque ID, le dernier valeur de mon CT0 lorsque ma variable "Champ" = Resp de la même semaine. Par contre si dans la semaine, il y a pas de Champ = Resp pour un ID, alors prendre la valeur de CT0 de la dernière ligne de ma semaine de ce ID.

    Ordre ID Champ Semaine CT0 CT
    1 A Cree 50 . 02
    2 A Resp 50 01 .
    3 A Resp 50 02 .
    4 A Etat 50 03 .
    5 B Cree 49 . 04
    6 B Resp 49 04 .
    7 B Resp 50 05 .
    8 C Cree 51 . 06
    9 C Etat 51 . .
    10 C Sous_etat 51 06 .

    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut SAS Last, group by
    Bonjour,

    Vous pouvez construire la variable pas à pas :

    • Table de départ :

    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
    data test;
      input Ordre :8. ID :$1. Champ :$9. Semaine :8. CT0 :8.;
      cards;
    1 	A 	Cree 	 	50 	. 	
    2 	A 	Resp 	 	50 	01 	
    3 	A 	Resp 	 	50 	02 	
    4  	A 	Etat 	 	50 	03 	
    5 	B 	Cree 	 	49 	. 	
    6 	B 	Resp 	 	49 	04 	
    7 	B 	Resp 	 	50 	05 	
    8  	C 	Cree 	 	51 	. 	
    9 	C 	Etat 	 	51 	. 	
    10 	C 	Sous_etat 	51 	06
    ;
    run;
    • Dernière valeur de CT0 par ID et par semaine lorsque Champ="Resp" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data CT0_resp(keep=ID Semaine CT0_Resp);
      set test(where=(Champ="Resp"));
      by ID Semaine;
      if last.Semaine;
      rename CT0=CT0_Resp;
    run;
    • Dernière valeur de CT0 par ID et par semaine sur l'ensemble de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data CT0_tot(keep=ID Semaine CT0_Tot);
      set test;
      by ID Semaine;
      if last.Semaine;
      rename CT0=CT0_Tot;
    run;
    • Combinaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test(drop=CT0_Resp CT0_Tot);
      merge test CT0_Resp CT0_tot;
      by ID Semaine;
      if Champ = "Cree" then do;
        CT = CT0_Resp;
        if CT = . then CT = CT0_Tot;
      end;
    run;
    • Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Ordre    ID    Champ        Semaine    CT0    CT
       1     A     Cree            50       .      2
       2     A     Resp            50       1      .
       3     A     Resp            50       2      .
       4     A     Etat            50       3      .
       5     B     Cree            49       .      4
       6     B     Resp            49       4      .
       7     B     Resp            50       5      .
       8     C     Cree            51       .      6
       9     C     Etat            51       .      .
      10     C     Sous_etat       51       6      .
    Cordialement,

  3. #3
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup!

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

Discussions similaires

  1. [Birt 4.3.1] Year to Date & Optional Y grouping
    Par zorbkaru dans le forum BIRT
    Réponses: 1
    Dernier message: 04/02/2014, 14h54
  2. [AC-2007] Case option et groupe
    Par Crachover dans le forum IHM
    Réponses: 3
    Dernier message: 27/07/2010, 18h31
  3. [AC-2007] Nouvelle option dans Groupe d'option
    Par miamou dans le forum IHM
    Réponses: 2
    Dernier message: 13/05/2010, 15h35
  4. [AC-2003] Ajout case d'option dans groupe d'option
    Par Nessie37 dans le forum IHM
    Réponses: 5
    Dernier message: 02/10/2009, 18h12
  5. ajout case option dans groupe option
    Par Pierren dans le forum Access
    Réponses: 2
    Dernier message: 06/10/2006, 19h25

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