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 ?
Appartenance à un data.frame
Bonjour,
• Avec la fonction merge() :
Code:
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:
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,