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 :

Compter le nombre de fois où la variable est positive


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Femme Profil pro
    chercheur
    Inscrit en
    avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Compter le nombre de fois où la variable est positive
    Bonjour à tous,
    J'ai une base de données avec 8 variables toutes binaires. Les 4 premières sont en 0/1 et les 4 dernières en 0/5.
    Je voudrais compter le nombre de 1 pour la variable 1, la 2, la 3 et la 4 et compter le nombre de 5 pour la variable 5, 6, 7 et 8.
    Je voudrais que ces 8 résultats soient mis dans une table à partir de laquelle je pourrai faire des graphiques.

    Merci à tous!

  2. #2
    Membre habitué

    Homme Profil pro
    Consultant Support Client SAS
    Inscrit en
    mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Support Client SAS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2011
    Messages : 94
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Je ne suis pas certains d'avoir compris votre demande mais si vous voulez juste récupérer le nombre de positif pour chaque variable j'écrirai quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    data new;
    set votre_table end=dernier;
    if x1>0 then count1+1;
    if x2>0 then count2+1;
    if x3>0 then count3+1;
    if x4>0 then count4+1;
    if x5>0 then count5+1;
    if x6>0 then count6+1;
    if x7>0 then count7+1;
    if x8>0 then count8+1;
    if dernier;
    run;
    Je pense qu'il doit être possible d'optimiser encore un peu ce code.

    Cordialement,
    Jérémy NOEL

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 111
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    La solution précédente est une bonne solution, mais si ta table d'entrée est volumineuse tu peux faire une requete SQL, qui t'évitera de lire les lignes 1 à 1 comme dans l'étape DATA.
    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
    proc sql;
    create table count
    as select 
     sum(x1=1) as sum_x1
    ,sum(x2=1) as sum_x2
    ,sum(x3=1) as sum_x3
    ,sum(x4=1) as sum_x4
    ,sum(x5=5) as sum_x5
    ,sum(x6=5) as sum_x6
    ,sum(x7=5) as sum_x7
    ,sum(x8=5) as sum_x8
     
    from table_entree
    ;
    quit;
    Bon courage.

  4. #4
    Membre à l'essai
    Femme Profil pro
    chercheur
    Inscrit en
    avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Merci à tous les 2 pour vos réponses.
    Le 2ème code stocke mes résultats dans la table count.
    Je vais les essayer, je vous dirai.

    Merci bien.

  5. #5
    Membre à l'essai
    Femme Profil pro
    chercheur
    Inscrit en
    avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Le deuxième code fonctionne à merveille!
    Merci.

  6. #6
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : février 2011
    Messages : 1 624
    Points : 3 397
    Points
    3 397
    Par défaut
    Hello,
    Pour automatiser la procédure, tu pourras faire :
    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
     
    data test;
    input var1-var8;
    cards ;
    0 1 0 0 0 0 0 5
    0 0 1 1 5 0 5 5
    0 0 1 0 0 0 0 5
    1 1 1 1 5 0 5 5
    0 0 1 1 5 0 5 0
    ;
    run;
    proc sort;
    by var1-var8;
    run;
     
    proc transpose data=test out=test1 (keep= _name_ col1 where=(col1 in (1,5)) );
    var var1-var8;
    by var1-var8;
    run;
     
    proc sql;
    	create table   cnt_var as select _name_ , count(*) as nb from test1 
    	group by _name_, col1;
    quit;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  7. #7
    Membre à l'essai
    Femme Profil pro
    chercheur
    Inscrit en
    avril 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup !

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

Discussions similaires

  1. Compter le nombre de fois ou une variable apparait.
    Par Cyanatide dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 29/03/2011, 12h48
  2. Réponses: 1
    Dernier message: 22/10/2007, 14h02
  3. Réponses: 1
    Dernier message: 01/05/2007, 10h39
  4. Réponses: 16
    Dernier message: 14/09/2006, 06h43
  5. Réponses: 2
    Dernier message: 06/01/2006, 23h18

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