我有两组数据,包括前数据和后数据。受访者有唯一的 ID,我想创建一个子集,其中仅包括对这两项调查都做出回应的人。示例数据集:
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)
我认为必须有比这个功能更好的方法来做同样的事情,但我想不出怎么做。我是怎么做的似乎有点乱。我的意思是,它起作用了——它做我想做的事,但我不禁想到有更好的方法。
如果已经以类似的方式询问过这个问题,但我找不到它,我深表歉意——在这种情况下,请务必向我指出相关的答案。