¿Eliminar filas que existen en otro marco de datos? [duplicar]
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 df1
para df1$name = df2$name
obtener 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.
Aceptado
Necesitas al %in%
operador. Entonces,
df1[!(df1$name %in% df2$name),]
debería darte lo que quieres.
df1$name %in% df2$name
prueba si los valores endf1$name
están endf2$name
- El
!
operador invierte el resultado.
A esto a veces se le llama anti-unión :
library(dplyr)
anti_join(df1, df2, by = "name")