J'ai les 2 data.frames suivants:
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
Je veux trouver la ligne a1 que a2 n'a pas.
Existe-t-il une fonction intégrée pour ce type d'opération?
(ps: j'ai écrit une solution pour cela, je suis simplement curieux de savoir si quelqu'un a déjà fait un code plus élaboré)
Voici ma solution:
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
rows.in.a1.that.are.not.in.a2 <- function(a1,a2)
{
a1.vec <- apply(a1, 1, paste, collapse = "")
a2.vec <- apply(a2, 1, paste, collapse = "")
a1.without.a2.rows <- a1[!a1.vec %in% a2.vec,]
return(a1.without.a2.rows)
}
rows.in.a1.that.are.not.in.a2(a1,a2)
a2 <- data.frame(a = c(1:3, 1), b = c(letters[1:3], "c"))
. Laisseza1
le même. Maintenant, essayez la comparaison. Même en lisant les options, je ne vois pas clairement quelle est la bonne façon de ne lister que les éléments communs.