У меня есть два набора данных, содержащих данные pre и post. Респонденты имеют уникальные идентификаторы, и я хочу создать подмножество, которое включает только тех, кто ответил на оба опроса. Пример набора данных:Соответствующие идентификаторы в двух наборах данных
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)
У меня есть следующие функции:
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)
Я думаю, что должно быть лучше, чем эта функция делает то же самое, но я не могу думать, как. Как я это сделал, кажется немного беспорядочным. Я имею в виду, он работает - он делает то, что я хочу, но я не могу не думать, что есть лучший способ.
Приносим извинения, если это уже было задано аналогичным образом, но я не смог его найти - в этом случае, пожалуйста, укажите мне соответствующий ответ.
Что-то вроде: 'all.data [all.data $ ID в%% пересекаются (pre.data $ ID , post.data $ ID),] '? – Arun