我在 R 中有两个数据框,我想有条件地将它们合并到id
和上day
。合并是right
合并到变量的left
变量尽可能新/新鲜/最近,但必须至少三天。
但是,如果没有匹配right
到我的id
-date
对,left
我仍然想保留它们。我的研究有两个部分,所以我不想仅仅因为它们不完整而放弃id
-观察。day
我可以sqldf
一步完成吗?我目前的方法需要一个额外的基础 R merge
。
left <- data.frame(id=rep(1:5, each=10),
day=rep(1:10, times=5),
x=rnorm(5*10))
right <- data.frame(id=rep(1:2, each=21),
day=rep(-10:10, times=2),
y=rnorm(2*21))
combined <- sqldf("SELECT L.id, L.day, L.x, R.y
FROM left L LEFT OUTER JOIN right R
ON (L.id = R.id)
WHERE ((L.day - R.day) >= 3)
GROUP BY L.id, L.day
HAVING (R.day = MAX(R.day))")
combined
combined.2 <- merge(left, combined, all=TRUE)
combined.2