para - ¿Eliminar filas que existen en otro marco de datos?
poligono en r (3)
Tengo los dos marcos de datos siguientes (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 en df1
para las cuales df1$name = df2$name
para obtener lo siguiente:
Salida:
name profile type strand
D 14.0 1 -
E 45.1 1 -
F 32.8 1 -
Si alguien pudiera decirme qué parte del código utilizarlo sería de mucha ayuda, parecía simple al principio pero lo he estado arruinando desde ayer.
Esto a veces se llama un anti-join :
library(dplyr)
anti_join(df1, df2, by = "name")
Necesitas el operador %in%
. Asi que,
df1[!(df1$name %in% df2$name),]
Debería darte lo que quieres.
-
df1$name %in% df2$name
comprueba si los valores endf1$name
están endf2$name
- El operador invierte el resultado.
df1[!(as.character(df1$jobId) %in% as.character(df2$name)), ]
Tuve que agregar as.character
a mi ejecución porque el name
no es un carácter sino un factor. ¿No se supone %in%
para convertir esto directamente?