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 STAT Discussion :

comptage et somme dans un tableau


Sujet :

SAS STAT

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut comptage et somme dans un tableau
    Bonjour à tous
    J'ai besoin de votre aide
    J'ai un tableau de ce genre

    Nom : Capture1.JPG
Affichages : 263
Taille : 14,1 Ko

    et je veux avoir un tableau comme celui ci

    sachant que publicité1 = count(publicité) pour chaque variété et tarif1= somme(tarif) pour chaque variété et que j'ai une dizaine de variétés
    Pièce jointe 176815Nom : Capture3.JPG
Affichages : 337
Taille : 11,7 Ko

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Bonjour,
    Essayes ce code pour voir si ça donne le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    data resultat (drop=tarif publicite rename=(publicite1=publicite tarif1=tarif)) ;
     set tatable;
     by variete notsorted ;
     if first.variete then do ; publicite1=0 ; tarif1=0 ; end ;
     publicite1+1;   tarif1+tarif ;
     if last.variete then output ;
    run;
    Ward

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    Merci, j'ai eu le résultat mais j'ai eu ce message d'erreur
    Nom : Capture1.JPG
Affichages : 237
Taille : 25,2 Ko

  4. #4
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    Il ya un autre problème , par exemple si j'ai cette table
    Nom : Capture1.JPG
Affichages : 256
Taille : 18,2 Ko
    voila le résultat que me donne ce code
    Nom : Capture1.JPG
Affichages : 252
Taille : 13,2 Ko
    il fait pas la somme selon la variété pour toute la table dans ce cas

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    J'ai ajouté ce code pour résoudre le problème , je sais pas si y a une solution meileure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql noprint ;
       create table resultats as
          select Q25,sum(Q2) as cumul_q2, sum(Q46) as cumul_Q46
          from resultat
          group by Q25
       ;
    quit ;

  6. #6
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    S'il vous plait, est ce que c'est possible d'avoir un tableau pareil à partir de mon tableau initial?
    Nom : Capture1.JPG
Affichages : 266
Taille : 14,6 Ko

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par étudiant11 Voir le message
    Merci, j'ai eu le résultat mais j'ai eu ce message d'erreur
    Nom : Capture1.JPG
Affichages : 237
Taille : 25,2 Ko
    C’est normal car la variable « publicite » n’existe pas dans ta table initiale !

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par étudiant11 Voir le message
    Il ya un autre problème , par exemple si j'ai cette table
    Nom : Capture1.JPG
Affichages : 256
Taille : 18,2 Ko
    voila le résultat que me donne ce code
    Nom : Capture1.JPG
Affichages : 252
Taille : 13,2 Ko
    il fait pas la somme selon la variété pour toute la table dans ce cas
    C’est aussi normal parce que j’ai utilisé l’instruction « NOTSORTED » en croyant que ta table initiale a été triée au préalable et ce n’était pas le cas.
    Donc, il faut réellement trier la table « by Q25 ». Voici le code avec ton exemple:
    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 pub ;
    input Q25 $ Q2 $ Q46 ;
    cards ;
    lait  tv 150
    lait  radio 100
    janbon tv 150
    janbon press 50
    janbon radio 145
    lait  radio 100
    janbon tv 20
    ;  run ;  
    
    proc sort data=pub ; by Q25 ; run ;
    
    data result (drop=Q2 Q46) ;
     set pub;
     by Q25 ;
     if first.Q25 then do ; Freq_Q2=0; Cummul_Q46=0 ; end ;
     Freq_Q2+1;   Cummul_Q46+Q46 ;
     if last.Q25 then output ;
    run;
    Ward

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par étudiant11 Voir le message
    Je sais pas si y a une solution meileure
    J’ai rectifié ton code SQL pour qu’il fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql noprint ;
       create table resultats as
          select Q25, count(Q2) as cumul_q2, sum(Q46) as cumul_Q46
          from pub 
          group by Q25 ;
    quit ;
    Ward

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par étudiant11 Voir le message
    S'il vous plait, est ce que c'est possible d'avoir un tableau pareil à partir de mon tableau initial?
    Nom : Capture1.JPG
Affichages : 266
Taille : 14,6 Ko
    Qui :
    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
     
    proc sort data=pub ; by Q25 Q2 ; run ;
     
    data resultats;
     set pub;
      by Q25 Q2 ;
     if first.Q2 then Somme=0;
     Somme+Q46;
    if last.Q2 then output ;
    run;		 
     
    option missing=0 ;
    proc transpose DATA=resultats out=out_result(drop=_name_)  ;
    	BY Q25;
    	var Somme;
    	id Q2;
    run;
    Cordialement Ward

  11. #11
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    merci infiniment ward pour vos réponses , ça marche

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    S'il vous plait est ce qu'il y a des procédures qui peuvent me donner le résultat directement??

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    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 : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par étudiant11 Voir le message
    S'il vous plait est ce qu'il y a des procédures qui peuvent me donner le résultat directement??
    Oui, il y a proc SUMMARY et proc TRANSPOSE dans ce cas là.
    Proc SUMMARY remplace le code proposé dans le cadrant #8 et tu peux utiliser directement cette procédure sans trier la table PUB.
    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 Pub   ;
    input Q25 $ Q2 $ Q46 ;
    cards ;
    lait  tv 150
    lait  radio 100
    janbon tv 150
    janbon press 50
    janbon radio 145
    lait  radio 100
    janbon tv 20
    ;  run ;  
     
    proc summary data=Pub nway;
    class Q25 Q2 ;
    var Q46;
    output out=Summary_Table(drop=_type_ _freq_)  sum=somme;
    run;   
     
    option missing=0 ;
    proc transpose DATA=Summary_Table out=Transpose_Table(drop=_name_)  ;
    BY Q25;
    var Somme;
    id Q2;
    run;
    Cordialement
    Ward

  14. #14
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    Sil vous plait, cette forme de tableau je peux l'avoir aussi avec une procédure ??
    Nom : Capture1.JPG
Affichages : 155
Taille : 24,3 Ko
    à partir de cette table
    Nom : Capture1.JPG
Affichages : 147
Taille : 22,7 Ko

    J'ai eu le résultat en utilisant proc summary et proc transpose, simplement je n'ai pas eu le fusionnement que je dois avoir au niveau de la variété.
    C'est ce que j'ai eu
    Nom : Capture1.JPG
Affichages : 153
Taille : 28,2 Ko
    Que puis je faire ?

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

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Sil vous plait, cette forme de tableau je peux l'avoir aussi avec une procédure ??
    Avec proc tabulate:
    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
    26
    27
    28
    data test;
    input variete $ mois $ marque $ investi ;
     
    cards;
    lait 1 oo 400
    lait 2 bf 1400
    chocolat 3 ml 145
    lait 3 oo 147
    biscuit 2 kj 256
    chocolat 2 mp 589
    biscuit 1 hg 58
    lait 3 bf 145
    biscuit 2 kj 456
    ;run;
     
    proc format ;
    value $ moiss
    '1'='Janvier'
    '2'='Février'
    '3'='Mars';
    run;
    proc tabulate data=test;
     
    class variete mois marque;
    var investi;
    table variete*marque , mois=''*investi=''*sum='' all=''*investi='Total'*sum='';
    format mois  $moiss.;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  16. #16
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    Merci brahim ça me donne le résultat que je cherche voila ce que j'ai eu
    Nom : Capture1.JPG
Affichages : 154
Taille : 23,6 Ko
    Mais est ce que je peux mettre marque en même ligne avec les mois c-à-d
    Nom : Capture1.JPG
Affichages : 150
Taille : 27,4 Ko

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

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Avec quelques modifications, voici ce que j'ai réussi à faire.

    Est ce cela répond à ta question?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ODS RTF file='c:\sas\test.rtf' ; 
    proc tabulate data=test  S=[FOREGROUND=BLACK CELLWIDTH=200 JUST=C];
     
    class variete mois marque;
    classlev marque /s=[CELLWIDTH=100];
    var investi;
    table variete=''*marque='', mois=''*investi=''*sum='' all=''*investi='Total'*sum=''/  box={label='marque'  s=[ JUST=R ]}  rts=25   ;
    format mois  $moiss. ;
    run;
    ods rtf close;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  18. #18
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Points : 101
    Points
    101
    Par défaut
    merci brahim oui ça marche

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

Discussions similaires

  1. [Word 2007] Somme dans un tableau word
    Par Myogtha dans le forum Word
    Réponses: 9
    Dernier message: 18/02/2009, 00h07
  2. Calculer une somme dans un tableau
    Par nawak.seb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/02/2009, 16h21
  3. Poucentage d'une somme dans un tableau croisé
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 07/04/2008, 11h33
  4. % du somme dans un tableau croisé
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 31/03/2008, 15h31
  5. Comptage d'occurrences dans un tableau
    Par ulysse031 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/02/2007, 15h19

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