Mam dwa zestawy danych, zawierające dane przed i po. Respondenci mają unikalne identyfikatory i chcę utworzyć podzbiór obejmujący tylko tych, którzy odpowiedzieli na oba ankiety. Przykład zbioru danych:Dopasowywanie identyfikatorów w dwóch zestawach danych
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)
Mam następującą funkcję:
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)
myślę, że musi być lepszy sposób niż ta funkcja robi to samo, ale nie mogę myśleć jak to zrobić. Jak to zrobiłem wydaje się trochę nieporządny. Mam na myśli, że działa - robi to, co chcę, ale nie mogę powstrzymać się od myślenia, że istnieje lepszy sposób.
Moje przeprosiny, jeśli zostało to już zadane w podobny sposób, ale nie mogłem go znaleźć - w takim przypadku proszę zwrócić się do odpowiedniej odpowiedzi.
Coś jak: 'all.data [all.data $ ID% w% przecinają (pre.data $ ID , post.data $ ID),] '? – Arun