是否有一个函数可以针对 dataSet_1 中的每个值,根据多个条件在 dataSet_2 中进行搜索?就像在 SQL 中,对于每个值,进行新的搜索。
SELECT
value1Table1,
value2Table1,
(
SELECT MIN(value) FROM table_2 AS table_2
WHERE table_2.value1 = table_2.value1 AND table_1.Date > table_2.Date
) AS value1table2,
value3Table1
FROM table_1
从 MAX 更改为 MIN 和 < for > 对以下示例进行查询:
我会试着多解释一点。通常,在我有日期 (factDate) 的情况下,我会使用类似的方法,并且对于每个用户(具有自己不同的日期),我需要搜索在 factDate 之后发生的第一个事件。
例子:
表格1
|User|TargetEventDate|NextEventDate| <- Value that I want
|A |2018-04-17 |2018-04-18 | <- Value to Find
|B |2018-04-14 |2018-04-15 | <- Value to Find
表_2
|User|DateEvent |
|A |2018-04-19|
|A |2018-04-18| <- Value that I want for user A
|A |2018-04-17| <- Value used in Table_1 for user A
|A |2018-04-13|
|A |2018-03-10|
|B |2018-04-17|
|B |2018-04-15| <- Value that I want for user B
|B |2018-04-14| <- Value user in Table_1 for user B
由于WHERE
相关子查询中的子句,我没有看到将查询重写为更简单的方法。但是,好消息是 R 有一个名为的包sqldf
,它实际上可以执行常规 SQL 查询。
library(sqldf)
query <- "SELECT t1.value1Table1, t1.value2Table1,
(SELECT MAX(value) FROM table_2 t2
WHERE t1.value1 = t2.value1 AND t1.Date < t2.Date) AS value1table2,
t1.value3Table1
FROM table_1"
result <- sqldf(query)
我在这里假设table_1
和table_2
是实际的数据框,其中的列与查询所引用的列相对应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句