问题标签 [non-equi-join]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

join - 在 GTE 或 LTE 条件下执行左连接的替代方法是什么?

我需要使用特定的旧版本 HIVE,它会阻止我在 GTE 或 LTE 条件下加入 2 个表。例如什么是等价的

什么是替代查询?

0 投票
1 回答
168 浏览

r - 在 r 中加入大数据框并同时过滤

我有两个数据框,每个数据框都有大约一百万行,我想通过 id 加入它们,然后过滤,以便对于每一行,列日期的值包含在 startdate 和 enddate 的值之间。

Andplyr::inner_join无法正常工作,因为它需要太多内存。对于每个id日期间隔df2都比 in大很多,df1这就是为什么 aninner_join %>% filter效率不高,是否可以同时进行?

0 投票
2 回答
153 浏览

r - 基于另一个数据帧对数据帧求和

我有 10 年内 10 个地点的每日降雨量数据

我有一个单独的数据框,它有特定的日子,我想用它来总结降雨量df

我想要的是 in 中的行df.ref,使用 in 中的indexdf.ref并将dfindex1 到 index2、index1 到 index3 和 index1 到 index4 之间的降雨量相加。例如:

使用df.ref,对于 loc.id = 1 和 year == 2001,将df250 到 264、250 到 280、250 到 296 的降雨量相加(如图所示df.ref) 同样,对于 2002 年,对于 loc.id = 1,求和降雨量从 250 到 269、250 到 284、250 到 298。

我这样做了:

我希望使我的代码更快,因为我的实际代码df.ref很大。谁能告诉我如何让这个更快。

0 投票
1 回答
1316 浏览

r - 如果日期在日期范围内,则按组求和

假设我有两个数据框。

第一个包括“名称”为“ID”发出“Rec”的“Date”和“Rec”失效的“Stop.Date”。

df(仅一部分)

第二个数据帧只包含一个时间序列:假设在这种情况下从 2006 年 3 月 29 日到 2006 年底。

df2

现在,如果 df2 中的“Date1”变量在时间范围内(直到 Stop.Date 的日期),我希望我的代码将所有由 ID 和名称组合的“Rec”相加

我发现这篇文章R - 如果日期在范围内,则求和,它似乎非常接近我的问题,但解决方案不考虑任何组。

我想提出一个data.frame,其中对于df2中的每个日期,都会显示每个“ID”的“REC”总和。

预期输出,例如

请记住,这只是数据的一小部分。通常,来自不同“名称”的每个“ID”存在更多的 Recs。(那么 sum 函数就有意义了)

非常感谢您提前提供的帮助。

更新后的版本

新数据框:

df

df2

如果我现在执行以下代码:

我得出以下结果:

但是由于例如df$ID“BMG4593F1389”的df2$Date1(“1999-12-29”)属于df中另外6个条目的日期范围(对于不同的df$Names)对于这个特定的df$date1,它应该是:

日期 1999-12-29 的预期结果(为简单起见,此处忽略 df3$interval 变量)

所以最后我需要复制 df$Date1 中的日期,如果有多个名称为特定的 df$ID 发出 Rec,该特定 df$ID 落在相应的日期范围内。

有人可以帮我吗?

0 投票
1 回答
894 浏览

r - R 中的非等值连接与 data.table - 反引号列名问题

当(反引号)列名包含空格时,我无法设法与 data.table 进行非等连接。

我在工作时从我们的数据库中收集这些名字,我们的明确政策是让每个人都使用相同的名字以避免混淆。我当然可以转换和重新转换,但我宁愿避免这种情况。

我想知道,这是 data.table 中的一个小故障,如果是这样,可以补救吗?还是我错过了什么?我对 R 很陌生,所以后者完全有可能......

一个可重现的例子:

以下确实有效:

以下没有:

错误信息是:

( a [.data.table, b, on = .( test name1= test name4, test name2> : 列 [ test name2, test name2] 在 x 中找不到

会话信息():

0 投票
4 回答
97 浏览

r - 在 df2 的日期时间中使用 df1 的“小时”和“分钟”的条件合并 2 个数据帧

我有一个df.sample这样的数据框

我有另一个df.state这样的数据框

我正在尝试根据条件合并这两个数据框

如果hourand minindf.samplestarttimeand endtimeof内df.state,则合并state = Passdf.sample.

例如,第 2 行 indf.sample具有hour = 8min = 59并且由于它在starttime = 2018-11-12 08:59:00in内df.state,因此将值Pass相加

这是我想要的输出

我能够像这样合并这两个数据帧,但无法在 df.state 的开始时间和结束时间中查找 df.sample 的小时和分钟

有人能指出我正确的方向吗

0 投票
1 回答
252 浏览

join - 如何在 Hive SQL 中按日期范围独家加入?

我有两个子查询,我只想按第一个表的开放日期和关闭日期之间的日期范围加入。

第一个表示例:

第二个表示例:

期望的输出:

这是我的代码:

我知道 Hive SQL 不支持将不等式作为JOIN. 但是我应该如何处理这个问题?

注意:我需要的连接专门用于日期,t1 和 t2 中没有相等的键可以用来连接它们。

谢谢!

0 投票
1 回答
118 浏览

r - 使用数据表的日期非等值连接

我有一个编辑数据表:

我想加入事件数据表:

要获得如下所示的输出,其中值指定编辑发生时的概率值:

到目前为止,这是我尝试加入两者的方法:

但是,当我尝试这样做时,我收到一条错误消息,显示“ vecseq 中的错误(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, : Join results in 16 rows; more than 14 = nrow( x)+nrow(i). 检查 i 中的重复键值,每个键值都加入 x 中的同一组。如果没问题,请尝试 by=.EACHI 为每个组运行 j 以避免大分配. 如果您确定要继续,请使用 allow.cartesian=TRUE 重新运行。否则,请在 FAQ、Wiki、Stack Overflow 和 data.table 问题跟踪器中搜索此错误消息以获取建议。 "

0 投票
0 回答
35 浏览

r - 当主 df 中的日期在小 df 的范围内时,R 总结

与此处的 do.call/lapply 方法和此处data.table方法类似,但两者都具有以下设置:

  • 带有数据和开始日期/结束日期范围的 MainDF
  • 带有单个日期向量的 SubDF

用户在哪里寻找与每个 SubDF 日期重叠的所有 MainDF 范围的摘要。我有

  • 带有数据和单个日期向量的 MainDF
  • 具有开始日期/结束日期范围的 SubDF

并且我希望将摘要附加到 SubDF,以获取属于每个 SubDF 范围内的多行 MainDF 数据。例子:

从第二个链接尝试 data.table 方法我认为它应该是这样的:

但它与未使用的参数错误on。在我的实际数据上,我通过使用 (相当于) 得到了一个结果max(MainDF$DataA),但它是第二个值的 3 次重复(在我的实际数据中,最后一行不会运行,因为它没有 DateTo 的值)。我怀疑使用MainDF$手段我已经颠覆了分组。

我怀疑我已经接近了,但我真的很难data.table理解复杂用例的思维方式。我想要做的汇总统计数据是(例如数据):

  • Mean&Max的数据A
  • length(which(DataA > 3))
  • difftime(last(Dates), first(Dates), units = "mins")
  • Dates[which.max(DataA)]

我添加了interval上面的行,因为它data.table%between%帮助表明一个人可能能够使用一种Dates %between% interval格式,但它没有在文本或示例中具体提到间隔/差异时间,而且我的尝试已经在其他地方失败了,所以我不愿意专注于改进我的跑不动了就跑!

我一直专注于 data.table 方法,因为它用于类似的问题,但我一直想知道是否可以使用dplyr's group_by/代替?'s似乎仅限于对列的测试(例如它们是因素),而不是与列行中的数据相关,但我可能是错的。group_by_ifgroup_by_if.predicate

提前感谢您的帮助!

0 投票
1 回答
1315 浏览

database - 内连接和非等连接有什么区别?

根据我在互联网上阅读的定义,在等连接中,连接条件是相等(=),而内连接也可以有其他运算符,例如小于(<)或大于(>)。

非等值连接是一种连接类型,其连接条件使用除等于以外的条件运算符。

这是否意味着非 equi 连接和内部连接是相同的?