je cherche un moyen rapide pour supprimer des lignes de mon df (df1), lignes au préalables stockées dans un autre df (df2).
Code : Tout sélectionner
df1 <- structure(list(indiv = structure(c(1L, 1L, 2L, 2L, 2L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"), var1 = c(55L, 77L, 11L, 33L, 11L, 11L, 77L), var2 = c(66L, 88L, 22L, 55L, 66L, 55L, 88L), var3 = c(55L, 77L, 11L, 44L, 88L, 55L, 99L), var4 = c(66L, 88L, 22L, 66L, 55L, 11L, 0L)), .Names = c("indiv", "var1", "var2", "var3", "var4"), class = "data.frame", row.names = c(NA, -7L))
df2 <- structure(list(indiv = structure(c(1L, 2L, 2L, 3L), .Label = c("A", "B", "C"), class = "factor"), var1 = c(55L, 33L, 11L, 11L), var2 = c(66L, 55L, 66L, 55L), var3 = c(55L, 44L, 88L, 55L), var4 = c(66L, 66L, 55L, 11L)), .Names = c("indiv", "var1", "var2", "var3", "var4"), class = "data.frame", row.names = c(NA, -4L))
J'ai essayé sans succès
Code : Tout sélectionner
df3 <- df1[which(!df1[,] %in% df2[,]),]
J'ai ensuite essayé la méthode suivante, qui fonctionne bien, mais mon fichier étant de taille très considérable, je crains que rbind + supprimer les doublons ne prenne beaucoup trop de temps. Il y a sûrement une méthode bien plus simple !
Code : Tout sélectionner
df3 <-rbind(df1,df2)
df3 <- df3[!duplicated(df3,fromLast = FALSE) & !duplicated(df3,fromLast = TRUE),]
En vous remerciant chaleureusement par avance,
Laëtitia