gpt4 book ai didi

r - 匹配两个数据集中的 ID

转载 作者:行者123 更新时间:2023-12-04 11:08:48 26 4
gpt4 key购买 nike

我有两组数据,包括前数据和后数据。受访者有唯一的 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)

我认为必须有比做同样事情的这个功能更好的方法,但我想不出怎么做。我是怎么做的,看起来有点乱。我的意思是,它有效 - 它按照我的意愿行事,但我不禁想到有更好的方法。

如果已经以类似的方式询问过这个问题,但我无法找到它,我很抱歉 - 在这种情况下,请务必指出相关答案。

最佳答案

注意: Arun 比我早一点在评论中发布了相同的答案。

您可以使用 intersect像这样 :

all.data[all.data$ID %in% intersect(pre.data$ID, post.data$ID),]

这使 :
   ID   Y Survey
1 1 yes 1
2 2 no 1
3 3 no 1
6 6 yes 1
7 7 yes 1
8 8 yes 1
9 9 no 1
10 10 yes 1
11 1 no 2
12 2 yes 2
13 3 no 2
14 6 no 2
15 7 yes 2
16 8 yes 2
17 9 no 2
18 10 yes 2

关于r - 匹配两个数据集中的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com