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

Débutez Discussion :

Création table en fonction d'une autre


Sujet :

Débutez

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Création table en fonction d'une autre
    Bonjour,

    J'ai un petit soucis pour la création d'une table que j'aimerais avoir en fonction d'une autre.
    Celle - ci se représente sous la forme :

    ID A B C Sal
    01 1 0 0 1600
    02 1 0 0 2599
    03 1 1 0 1293
    04 0 1 0 1865
    05 1 1 0 1653
    06 1 0 1 1343
    07 0 1 1 1657
    08 0 0 1 2431
    09 0 0 1 3421
    ...
    99 0 1 0 3986


    A partir de cette table, j'ai crée 7 groupes de personnes, à savoir ceux que l'on retrouve dans :
    - A
    - B
    - C
    - A et B
    - B et C
    - A et C
    - A, B et C.


    Comment pourrais - je à partir de là avoir en sortie un tableau ressemblant à ça :
    Groupe Nombre_obs
    G1 12
    G2 25
    G3 8
    G4 16
    G5 32
    G6 23
    G7 5


    Par une étape data, une proc sql ... ?

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 181
    Points
    181
    Par défaut
    Bonjour,

    Un essai :

    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
    29
    30
    31
    32
    33
    34
    data bdd;
    input ID A B C Sal ;
    datalines;
    01 1 0 0 1600
    02 1 0 0 2599
    03 1 1 0 1293
    04 0 1 0 1865
    05 1 1 0 1653
    06 1 0 1 1343
    07 0 1 1 1657
    08 0 0 1 2431
    09 0 0 1 3421
    10 1 1 1 3421
    ;
    run;
    proc means data = bdd(keep = a b c) noprint;
    class c b a;
    output out = bdd_2;
    run;
     
    data bdd_3;
        set bdd_2;
    if _type_ = 2**0 or _type_ = 2**1 or _type_ = 2**2 then do;
        if sum(of a b c) = 1;
    end;
    else if _type_ = 2**0 + 2**1 or _type_ = 2**0 + 2**2  or _type_ = 2**1 + 2**2 then do;
        if sum(of a b c) = 2;
    end;
    else if _type_ = 2**0 + 2**1 + 2**2 then do;
        if sum(of a b c) = 3;
    end;
    else delete;
    drop _type_;
    run;
    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Le problème pour ce code étant que si j'ai des 1 partout, le nombre d'observation sera à 10 partout.

    Merci quand même.

  4. #4
    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,

    Si le sujet est toujours d'actualité, 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    data bdd;
    input ID A B C Sal ;
    datalines;
    01 1 0 0 1600
    02 1 0 0 2599
    03 1 1 0 1293
    04 0 1 0 1865
    05 1 1 0 1653
    06 1 0 1 1343
    07 0 1 1 1657
    08 0 0 1 2431
    09 0 0 1 3421
    10 1 1 1 3421
    ;
    run;
     
    data bdd1;
    set bdd;
    array n(3) a b c;
    if n(1)=1 and n(2)=0 and n(3)=0 then temp1=1;
    if n(2)=1 and n(1) =0 and n(3)=0 then temp2=1;
    if n(3)=1 and n(1) =0 and n(2)=0 then temp3=1;
    if n(1)=1 and n(2)=1 and n(3)=0 then temp4=1;
    if n(1)=1 and n(3)=1 and n(2)=0 then temp5=1;
    if n(2)=1 and n(3)=1 and n(1)=0 then temp6=1;
    if (1)=1 and n(2)=1 and n(3)=1 then temp7=1;
    run;
    proc sql;
    create table bdd2 as select 
    sum(temp1) as g1,sum(temp2) as g2
    ,sum(temp3) as g3,sum(temp4) as g4,
    sum(temp5) as g5,sum(temp6) as g6,
    sum(temp7) as g7
    from bdd1
    ;
    QUIT; 
     
    proc transpose data=bdd2 out=bdd3 (rename=(_name_=Groupe col1=Nombre_obs));run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    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
    C’est la PROC SUMMARY qu’il faudrait utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc summary data=Bdd nway ;
    class A B C ;
    var Sal ;
    output out=Out_Bdd (drop=_type_ _freq_) sum=somme n=nobs ;
    run  ;
    Cdt Ward

Discussions similaires

  1. Alimenter une table en fonction d'une autre ?
    Par jujurochedu42 dans le forum jQuery
    Réponses: 1
    Dernier message: 07/01/2013, 12h42
  2. Select "table" en fonction d'une "autre table"
    Par Nicolas94 dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/06/2010, 02h38
  3. Mise à jour d'une table en fonction d'une autre
    Par lucy101 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2010, 14h24
  4. trier une table en fonction d'une autre
    Par boss_gama dans le forum Langage SQL
    Réponses: 7
    Dernier message: 18/10/2009, 11h17
  5. Afficher une table en fonction d'une autre
    Par buzz68180 dans le forum WinDev
    Réponses: 7
    Dernier message: 25/05/2009, 11h21

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