Ho due serie di dati, compresi dati pre e post. Gli intervistati hanno ID univoci e voglio creare un sottoinsieme che includa solo quelli che hanno risposto a entrambi i sondaggi. Esempio set di dati:ID corrispondenti in due dataset
pre.data <- data.frame(ID = c(1:10), Y = sample(c("yes", "no"), 10, replace = TRUE),
Survey = 1)
post.data <- data.frame(ID = c(1:3,6:10), Y = sample(c("yes", "no"), 8, replace = TRUE),
Survey = 2)
all.data <- rbind(pre.data, post.data)
Ho la seguente funzione:
match <- function(dat1, dat2, dat3){ #dat1 is whole dataset(both stitched together)
#dat2 is pre dataset #dat3 is post dataset
selectedRows <- (dat1$ID %in% dat2$ID &
dat1$ID %in% dat3$ID)
matchdata <- dat1[selectedRows,]
return(matchdata)
}
prepost.match.data <- match(all.data, pre.data, post.data)
Penso che ci deve essere un modo migliore di questa funzione di fare la stessa cosa, ma non riesco a pensare a come. Come ho fatto sembra un po 'complicato. Voglio dire, funziona, fa quello che voglio, ma non posso fare a meno di pensare che c'è un modo migliore.
Le mie scuse se questo è già stato chiesto in modo simile ma non sono stato in grado di trovarlo - in tal caso, per favore, indicarmi una risposta pertinente.
Qualcosa di simile: 'all.data [all.data $ ID% in% intersecano (pre.data $ ID , post.data $ ID,] '? – Arun