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 :

Somme colonne sous condition -> nouvelle colonne


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Somme colonne sous condition -> nouvelle colonne
    Bonjour,

    Voici une version simplifiée de mon data (les deux variables/ colonnes qui m'intéressent):
    id share
    1 a
    1 b
    1 c
    1 d
    2 e
    2 f
    2 g

    Je souhaite désormais créer une troisième variable "totalsharegroup" me donnant la somme des "shares" contenu dans chaque group.
    Dans l'exemple si dessus, cela donnerai:
    id share totalsharegroup
    1 a a+b+c+d
    1 b a+b+c+d
    1 c a+b+c+d
    1 d a+b+c+d
    2 e e+f+g
    2 f e+f+g
    2 g e+f+g

    J'arrive à voir le totalsharegroup de chaque groupe via une proc print. Cependant, je n'arrive pas à créer la colonne "totalsharegroup". Pouvez vous, s'il vous plait m'éclairer?

    Je vous remercie pour votre réponse. Cordialement,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Tu peux essayer ce code :
    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
    proc sort data=Tatable ; by id ; run ;	
     
    data test  ;
    do until (last.ID); 
      set Tatable ;  
      by id  ;	
      retain totalsharegroup ;   
      totalsharegroup=sum(share, totalsharegroup) ;
    end ;
     
    do until (last.id);  
      set Tatable ;
      by id  ;    
      output ;
    end; 
    run;
    Cordialement

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je vous remercie pour votre réponse. Cependant, le code ne me donne pas la somme des "shares" pour chaque groupe (id=1, 2, 3, ...). Pensez vous à une autre solution?

    Cordialement,

  4. #4
    Membre éclairé

    Femme Profil pro
    SAS FRANCE - Support Clients France et Europe
    Inscrit en
    Février 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : SAS FRANCE - Support Clients France et Europe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 289
    Points : 886
    Points
    886
    Par défaut
    Bonjour,

    pas certaine d'avoir bien compris le besoin, mais je tente ma chance !
    j'ai créée une colonne numérique pour pouvoir faire une somme.

    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
    data data1;
    input id $ share $ shareN ;
    cards ;
     1 a 1
     1 b 2
     1 c 3
     1 d 4
     2 e 5
     2 f 6
     2 g 7
     ;
     run ;
     
     proc summary data=data1  nway;
       class id ;
       var shareN ;
       output out=data2 (drop=_type_ _freq_) sum=Total;
       run ;
     
    proc sql ;
      create table data3 as 
        select data1.*, data2.total
    	from data1 full join data2 on data1.id=data2.id
        order by data1.id ;
    quit ;
    Cordialement,

    --
    Géraldine CADE-DESCHAMPS
    Consultante ▪ Support Clients SAS
    Tel: +33 1 60 62 12 12 ▪ support@sas.com
    www.sas.com/france
    SAS® … THE POWER TO KNOW®

Discussions similaires

  1. Recopier deux colonnes sous condition
    Par pipof dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 15/11/2011, 19h26
  2. [XL-2003] Bloquer une colonne sous condition
    Par louzz dans le forum Excel
    Réponses: 11
    Dernier message: 07/09/2011, 16h22
  3. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  4. selection de cellules d'une colonne sous condition
    Par Mounamidou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/10/2007, 14h09
  5. nouvelle colonne avec condition
    Par evaness dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 16h35

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