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

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut Variable compteur avec condition

    Bonjour à tous;

    Je souhaite calculer le pourcentage de portées multiples cumulé (par brebis et par parité) selon la formule suivante:

    pourcentage de portées multiples= (nombre de portées multiples/portées totales)x 100.

    Ma base de données est la suivante:

    Parité Brebis Portée
    1 AB11 1
    2 AB11 2
    3 AB11 1
    1 AB12 2
    2 AB12 1
    3 AB12 3
    4 AB12 1

    Quelqu'un aurait une idée?
    D'avance merci.

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    juillet 2011
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2011
    Messages : 448
    Points : 1 092
    Points
    1 092
    Billets dans le blog
    13

    Par défaut

    Bonjour,
    Je te propose cette solution:
    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
     
    data test;
    input 
    Parite Brebis $ Portee;
    cards;
    1 AB11 1
    2 AB11 2
    3 AB11 1
    1 AB12 2
    2 AB12 1
    3 AB12 3
    4 AB12 1
    ; run;
     
     
    proc sql;
    create table test1 as select t.brebis, sum(portee/t1.tot) as p_mul format=percent8.2
    from test as t,
    (select 
    sum(portee) as tot from test) as t1
    group by brebis
    ; quit;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut

    Rebonjour,

    Merci pour votre réponse. J'ai essayé votre code, mais ça m'a donné une seule valeur par brebis. Or je dois avoir une valeur par parité (pour chaque parité un pourcentage). J'ai rajouté group by brebis, parite mais je ça ne me donne pas les bonnes valeurs.

  4. #4
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    juillet 2011
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2011
    Messages : 448
    Points : 1 092
    Points
    1 092
    Billets dans le blog
    13

    Par défaut

    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
     
    data test;
    input 
    Parite Brebis $ Portee;
    cards;
    1 AB11 1
    2 AB11 2
    3 AB11 1
    1 AB12 2
    2 AB12 1
    3 AB12 3
    4 AB12 1
    ; run;
     
     
    proc sql;
    create table test1 as select t.Parite, t.brebis, sum(portee/t1.tot) as p_mul format=percent8.2
    from test as t,
    (select 
    sum(portee) as tot from test) as t1
    group by parite
    ; quit;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    juillet 2011
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2011
    Messages : 448
    Points : 1 092
    Points
    1 092
    Billets dans le blog
    13

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table test1 as select t.Parite, t.brebis, sum(portee/t1.tot) as p_mul format=percent8.2
    from test as t,
    (select 
    sum(portee) as tot from test) as t1
    group by t.parite, t.brebis
    ; quit;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut

    Merci beaucoup pour votre effort. ça ne me donne toujours pas les bonnes valeurs. La logique est la suivante (quand on calcule à main):


    Pour la première observation: %= 0/1 *100, 0 car la portée=1 (simple) et 1 car la brebis a eu une seule parité,
    Pour la deuxième observation: %= 1/2*100, 1 car la portée=2 (multiple) et 2 car la brebis a eu deux parités.
    Pour la troisième observation: %= 0/3*100, 0 car la portée=1 (simple) et 3 car la brebis a eu trois parités.

  7. #7
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    juillet 2011
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2011
    Messages : 448
    Points : 1 092
    Points
    1 092
    Billets dans le blog
    13

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    data test1;
    set test;
    if portee>1 then pm=1 ; else pm= 0;
    Val_cal=pm/parite;
    format val_cal percent8.2 ;
    run;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : février 2017
    Messages : 13
    Points : 10
    Points
    10

    Par défaut

    ça fonctionne. Je vous remercie.

Discussions similaires

  1. variable calculée avec condition date
    Par vlunel dans le forum Deski
    Réponses: 0
    Dernier message: 28/08/2013, 00h59
  2. Incrémentation d'une variable compteur avec retain
    Par AstridG dans le forum SAS Base
    Réponses: 6
    Dernier message: 09/12/2010, 17h17
  3. Compteur avec condition
    Par piflechien73 dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/09/2009, 22h50
  4. creation variables binaires avec conditions
    Par lyaka dans le forum SAS Base
    Réponses: 7
    Dernier message: 01/04/2009, 16h52
  5. Réponses: 22
    Dernier message: 21/04/2008, 16h14

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