¿Eliminar filas que existen en otro marco de datos? [duplicar]

Resuelto biohazard asked hace 54 años • 3 respuestas

Tengo los dos siguientes marcos de datos (ejemplo):

df1:

name    profile    type    strand
A       4.5        1       +
B       3.2        1       +
C       5.5        1       +
D       14.0       1       -
E       45.1       1       -
F       32.8       1       -
G       19.9       1       +

df2:

name
A
B
C
G

Me gustaría eliminar las filas df1para df1$name = df2$nameobtener lo siguiente:

Producción:

name    profile    type    strand
D       14.0       1       -
E       45.1       1       -
F       32.8       1       -

Si alguien pudiera decirme qué fragmento de código usar, sería de mucha ayuda. Al principio parecía simple, pero lo he estado arruinando desde ayer.

biohazard avatar Jan 01 '70 08:01 biohazard
Aceptado

Necesitas al %in%operador. Entonces,

df1[!(df1$name %in% df2$name),]

debería darte lo que quieres.

  • df1$name %in% df2$nameprueba si los valores en df1$nameestán endf2$name
  • El !operador invierte el resultado.
csgillespie avatar Jun 27 '2013 08:06 csgillespie

A esto a veces se le llama anti-unión :

library(dplyr)
anti_join(df1, df2, by = "name")
Hugh avatar Dec 29 '2016 00:12 Hugh