nicht vorhanden sind Ich habe folgende 2 data.frames:Vergleichen Sie zwei data.frames die Zeilen in data.frame 1 zu finden, die in data.frame 2
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
ich die Zeile a1 finden wollen hat das a2 nicht.
Gibt es eine eingebaute Funktion für diese Art von Betrieb?
(ps: Ich habe eine Lösung für sie geschrieben habe, bin ich einfach nur neugierig, wenn jemand bereits eine gearbeiteten Code gemacht)
Hier ist meine Lösung ist:
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)
Ich finde diese Funktion verwirrend. Ich dachte, es würde für mich funktionieren, aber es scheint nur zu funktionieren, wie oben gezeigt, wenn ein Satz identische übereinstimmende Reihen des anderen Satzes enthält. Betrachte diesen Fall: 'a2 <- data.frame (a = c (1: 3, 1), b = c (Buchstaben [1: 3]," c "))'. Lassen Sie 'a1' gleich. Jetzt versuche den Vergleich.Es ist mir nicht einmal beim Lesen der Optionen klar, was der richtige Weg ist, nur gemeinsame Elemente aufzulisten. – Hendy