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

Discussion: Fusion de tables sas

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : Maroc

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

    Informations forums :
    Inscription : juin 2019
    Messages : 23
    Points : 21
    Points
    21

    Par défaut Fusion de tables sas

    Bonjour à tous,
    J'ai 2 tables de données,
    Table 1:

    Id lact race duree
    1 3 ho 20
    1 3 ho 18
    1 3 ho 21
    1 4 ho 18
    1 4 ho 19
    2 1 mo 15
    2 1 mo 16
    2 2 mo 14
    2 2 mo 12

    Table 2:

    Id lact race P2 P3
    1 3 ho 120 56
    1 4 ho 122 50
    2 1 mo 100 65
    2 2 mo 130 70

    Je voudrais fusionner ces deux tables de façon à avoir une seule table dont la structure est la suivante, (sachant que les variables qualitatives qui sont en commun entre les deux tables sont Id et Lact):

    Id lact race duree P2 P3
    1 3 ho 20 120 56
    1 3 ho 18 120 56
    1 3 ho 21 120 56
    1 4 ho 18 122 50
    1 4 ho 19 122 50
    2 1 mo 15 100 65
    2 1 mo 16 100 65
    2 2 mo 14 130 70
    2 2 mo 12 130 70

    Merci d'avance.
    Bien cordialement.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2019
    Messages : 12
    Points : 34
    Points
    34

    Par défaut

    Bonjour,

    un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data fusion;
    merge table1 table2;
    by id lact;
    run;
    ne convient pas ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : Maroc

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

    Informations forums :
    Inscription : juin 2019
    Messages : 23
    Points : 21
    Points
    21

    Par défaut

    Bonjour,
    Merci pour votre proposition, mais ça marche pas, peut etre c'est du au fait que dans la table 1 le meme id se repete en plusieurs lignes par contre dans la table 2 chaque ligne presente un id unique.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2019
    Messages : 12
    Points : 34
    Points
    34

    Par défaut

    Quelle est l'erreur ? Un match merge many-to-one fonctionne bien normalement.

    En reprenant vos exemples, cela semble pourtant fonctionner.
    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
    data table1;
    input Id 	lact 	race $	duree;
    datalines;
    1 	3 	ho 	20
    1 	3 	ho 	18
    1 	3 	ho 	21
    1 	4 	ho 	18
    1 	4 	ho 	19
    2 	1 	mo 	15
    2 	1 	mo 	16
    2 	2 	mo 	14
    2 	2 	mo 	12
    ;
    run;
    data Table2;
    input Id 	lact 	race $	P2 	P3;
    datalines;
    1 	3 	ho 	120 	56
    1 	4 	ho 	122 	50
    2 	1 	mo 	100 	65
    2 	2 	mo 	130 	70
    ;
    run;
     
    /*
    * si besoin;
    proc sort data=table; by id lact; run;
    proc sort data=table2; by id lact; run;
    */
    data fusion;
    merge table1 table2;
    by id lact;
    run;
    Sinon par la proc sql, à voir quelle jointure vous convient le mieux (left, full, inner, ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    proc sql;
    create table fusion_sql as
    select *
    from table1 as t1 full join table2 as t2
    on t1.id=t2.id and t1.lact=t2.lact
    ;
    quit;

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : Maroc

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

    Informations forums :
    Inscription : juin 2019
    Messages : 23
    Points : 21
    Points
    21

    Par défaut

    Bonjour,
    Oui effectivement cela marche très bien mais pour ma vrai base de données j'ai trouvé que pas forcément les id/lact de la table1 se trouvent dans la table2.
    normalement je dois avoir une table fusion avec le même nombre de ligne que la table1 et avec des données manquantes si les id/lact ne se trouvent pas dans la table2, mais dans mon cas j'ai un peu près 200 000 lignes dans la table1 mais je me retrouve après l’exécution du merge avec une table fusion de seulement 70 000 lignes.
    Donc j'ai essayé de supprimer les doublons (by id et lact) de la table1 et faire par la suite une comparaison entre la table1 et 2.
    je veux par la suite supprimer les individus qui ne sont pas présents en même temps dans les deux tables(chose que je ne sais pas comment appliquer),
    qu'est ce que vous pensez de ce raisonnement? est ce que je dois en continuer?
    cordialement

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Statisticien
    Inscrit en
    juillet 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2019
    Messages : 12
    Points : 34
    Points
    34

    Par défaut

    pour fusionner et ne garder que ceux présents dans les 2 tables à la fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table fusion_sql as
    select *
    from table1 as t1 inner join table2 as t2
    on t1.id=t2.id and t1.lact=t2.lact
    ;
    quit;
    mais vous avez dû vous tromper dans vos bases pour les merge. Un merge sans filtre renvoie au moins autant de ligne que la plus grande des bases

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

Discussions similaires

  1. Fusion de deux tables SAS
    Par Dadakane dans le forum Débutez
    Réponses: 10
    Dernier message: 07/02/2014, 10h23
  2. Fusion tables SAS
    Par james06 dans le forum SAS Base
    Réponses: 2
    Dernier message: 16/01/2012, 10h09
  3. Fusion de tables SAS issues de fichiers EXCEL
    Par gasikely dans le forum Débutez
    Réponses: 6
    Dernier message: 07/10/2011, 21h54
  4. fusion de table avec un champ en commun
    Par chamoix dans le forum Access
    Réponses: 3
    Dernier message: 13/12/2006, 23h18
  5. importation et fusion de tables access
    Par M@X_be dans le forum Access
    Réponses: 2
    Dernier message: 20/11/2005, 00h37

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