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$namecomprueba si los valores endf1$nameestá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?