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

R Discussion :

Appartenance à un data.frame


Sujet :

R

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut Appartenance à un data.frame
    Bonjour à tous

    Je souhaiterais savoir s'il existe une commande simple pour tester l'appartenance d'enregistrements dans un data.frame.

    Je dispose de deux BDD de même structure, de plus de 500.000 enregistrements chacune.
    Je voudrais connaître les éléments qui intersecte ces deux BDD.

    J'ai essayé avec la fonction intersect(E,F), mais elle ne marche pas ici (elle ne m'a rien renvoyé alors que je sais que l'intersection est non vide).
    Faire une boucle qui examine chaque élément de l'une pour voir si elle appartient à l'autre, prend trop de temps avec ces deux BDD très lourdes.
    Bidouiller en utilisant les éléments identifiants est possible, mais pas rapide et pas forcément très simple.

    Est-ce que quelqu'un n'aurait pas une astuce plus pratique ?

  2. #2
    Membre habitué
    Homme Profil pro
    Master Data Manager
    Inscrit en
    Février 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Master Data Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 113
    Points : 148
    Points
    148
    Par défaut
    Bonjour.

    J'aurai tendance à utiliser une requête SQL pour obtenir l'intersection de deux tables. Pourquoi le faire dans R ?

    Sinon la fonction inner_join() du package dplyr devrait vous aider.

  3. #3
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Appartenance à un data.frame
    Bonjour,

    • Avec la fonction merge() :

    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
    data(mtcars)
    mtcars$modele <- row.names(mtcars)
    mtcars1 <- mtcars[c(1:24),]
    mtcars2 <- mtcars[c(9:32),]
     
    selec <- merge(mtcars1, mtcars2, by=names(mtcars1), sort=FALSE)
    selec
    #>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb              modele
    #> 1  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2            Merc 230
    #> 2  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4            Merc 280
    #> 3  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4           Merc 280C
    #> 4  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3          Merc 450SE
    #> 5  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3          Merc 450SL
    #> 6  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3         Merc 450SLC
    #> 7  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4  Cadillac Fleetwood
    #> 8  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4 Lincoln Continental
    #> 9  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4   Chrysler Imperial
    #> 10 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1            Fiat 128
    #> 11 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2         Honda Civic
    #> 12 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1      Toyota Corolla
    #> 13 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1       Toyota Corona
    #> 14 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    Dodge Challenger
    #> 15 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2         AMC Javelin
    #> 16 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4          Camaro Z28
     
    # Created on 2020-12-28 by the reprex package (v0.3.0)
    • Avec la fonction inner_join() du package dplyr proposée par Puppet_Master :

    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
    selec <- dplyr::inner_join(mtcars1, mtcars2)
    #> Joining, by = c("mpg", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am", "gear", "carb", "modele")
    selec
    #>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb              modele
    #> 1  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2            Merc 230
    #> 2  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4            Merc 280
    #> 3  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4           Merc 280C
    #> 4  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3          Merc 450SE
    #> 5  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3          Merc 450SL
    #> 6  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3         Merc 450SLC
    #> 7  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4  Cadillac Fleetwood
    #> 8  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4 Lincoln Continental
    #> 9  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4   Chrysler Imperial
    #> 10 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1            Fiat 128
    #> 11 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2         Honda Civic
    #> 12 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1      Toyota Corolla
    #> 13 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1       Toyota Corona
    #> 14 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    Dodge Challenger
    #> 15 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2         AMC Javelin
    #> 16 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4          Camaro Z28
     
    # Created on 2020-12-28 by the reprex package (v0.3.0)
    Cordialement,

Discussions similaires

  1. Extraire une sous data.frame
    Par manoir dans le forum R
    Réponses: 4
    Dernier message: 10/07/2009, 14h39
  2. Dupliquer les lignes d'une data. frame
    Par manoir dans le forum R
    Réponses: 2
    Dernier message: 09/07/2009, 18h25
  3. Mean par colonne dans une data frame
    Par manoir dans le forum R
    Réponses: 3
    Dernier message: 19/06/2009, 11h06
  4. Trier une data frame
    Par manoir dans le forum R
    Réponses: 4
    Dernier message: 28/04/2009, 16h29
  5. Réponses: 2
    Dernier message: 14/11/2008, 14h53

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