mam następujące 2 data.frames:Porównaj dwa data.frames znaleźć wiersze w data.frame 1, które nie są obecne w data.frame 2
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
Chcę odnaleźć a1 wiersz ma że a2 nie.
Czy istnieje funkcja do tego typu operacji?
(ps: Ja nie napisałem rozwiązanie dla niego, jestem po prostu ciekawy, czy ktoś już kod bardziej spreparowane)
Oto moje rozwiązanie:
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)
Funkcja ta jest myląca. Pomyślałem, że to zadziała, ale wydaje mi się, że działa tylko tak, jak pokazano powyżej, jeśli jeden zestaw zawiera identycznie pasujące wiersze drugiego zestawu. Rozważmy ten przypadek: 'a2 <- data.frame (a = c (1: 3, 1), b = c (litery [1: 3]," c "))'. Pozostaw 'a1' tak samo. Teraz spróbuj porównania.Nie jest dla mnie jasne, nawet czytając opcje, w jaki sposób należy wymienić tylko wspólne elementy. – Hendy