Ho le seguenti 2 data.frames:Confronta due data.frames per trovare le righe in data.frame 1 che non sono presenti in data.frame 2
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
voglio trovare la A1 riga ha che a2 no.
Esiste una funzione integrata per questo tipo di operazione?
(ps: ho scritto una soluzione per esso, io sono semplicemente curioso di sapere se qualcuno ha già fatto un codice più artigianale)
Ecco la mia soluzione:
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)
Trovo questa funzione confusa. Ho pensato che avrebbe funzionato per me, ma sembra funzionare solo come mostrato sopra se un set contiene righe identiche dell'altra serie. Considera questo caso: 'a2 <- data.frame (a = c (1: 3, 1), b = c (letters [1: 3]," c "))'. Lascia 'a1' lo stesso. Ora prova il confronto.Non mi è chiaro nemmeno leggendo le opzioni, il modo corretto è elencare solo elementi comuni. – Hendy