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

Discussion: SAS Last, group by

  1. #1
    Membre à l'essai
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    décembre 2018
    Messages
    11
    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 : 11
    Points : 14
    Points
    14

    Par défaut SAS 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 éclairé
    Inscrit en
    novembre 2009
    Messages
    395
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 395
    Points : 771
    Points
    771

    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
    11
    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 : 11
    Points : 14
    Points
    14

    Par défaut

    Merci beaucoup!

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

Discussions similaires

  1. SQL GROUP by COUNT
    Par Xuya5668 dans le forum SAS
    Réponses: 2
    Dernier message: 13/12/2018, 17h56
  2. Modification groupe portail SAS
    Par maverik40 dans le forum SAS Base
    Réponses: 7
    Dernier message: 22/11/2011, 18h41
  3. SAS comment calculer les effectifs en sous groupe?
    Par inatha dans le forum SAS STAT
    Réponses: 0
    Dernier message: 15/04/2011, 21h38
  4. Réponses: 3
    Dernier message: 11/01/2011, 18h09
  5. Réponses: 6
    Dernier message: 23/09/2009, 15h47

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