【问题标题】:How to do a complex join in R?如何在 R 中进行复杂的连接?
【发布时间】:2016-01-20 16:34:35
【问题描述】:

如何在 R 中完成复杂的(即不是等值连接)?

例如,假设我们有以下数据:

B <- data.frame(m = 1:100, x = rnorm(100))
A <- data.frame(id = 1:200, m0 = sample(B$m, 200, replace = TRUE))
A$m1 <- A$m0 + sample(1:20, nrow(A), replace = TRUE)

然后在 SQL 中可以做这样的事情:

SELECT A.id, SUM(B.x)
FROM A
JOIN B ON B.m BETWEEN A.m0 AND A.m1
GROUP BY A.id

如何在 R 中做类似的事情(除了使用循环)?

【问题讨论】:

标签: r join merge


【解决方案1】:

一种方法是使用 sqldf:

# Using data defined in question
library('sqldf')
R <- sqldf('select A.id, sum(B.x) s from A join B on B.m between A.m0 and A.m1 group by A.id')

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2010-10-13
    • 2015-03-20
    • 2012-05-22
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多