使用%in%函数R,根据链接器ID从第二个数据集中存在的数据集中获取所有观察结果

col*_*lin -4 r

所以,假设我有两个数据集:

d1<- data.frame(seq(1:10),rnorm(10))
colnames(d1) <- c('id','x1')

d2<- data.frame(seq(3:7),rnorm(5))
colnames(d2) <- c('id','x2')
Run Code Online (Sandbox Code Playgroud)

现在,假设我想要一个新的数据集,d3即具有该d1值的数据id也存在于其中d2.我想使用一个非常简单的功能,例如:

d3 <- d1[id %in% d2$id]
Run Code Online (Sandbox Code Playgroud)

除了这是为我打印错误.什么是简单的衬垫才能实现这一目标?

akr*_*run 5

我们可以用

 subset(d1, id %in% d2$id)
Run Code Online (Sandbox Code Playgroud)

要么

 d1[d1$id %in% d2$id,]
Run Code Online (Sandbox Code Playgroud)

不确定这是否简化,但data.table解决方案可能更有效.

 library(data.table)
 setDT(d1, key='id')[d2$id]
Run Code Online (Sandbox Code Playgroud)