相关疑难解决方法(0)

使用重复键在data.table上滚动连接

我想了解rolling joinsdata.table.最后给出了重现这一点的数据.

给出机场交易的数据表,在给定时间:

> dt
   t_id airport thisTime
1:    1       a      5.1
2:    3       a      5.1
3:    2       a      6.2  
Run Code Online (Sandbox Code Playgroud)

(注t_ids1和3有相同的机场和时间)

以及从机场起飞的航班查询表:

> dt_lookup
   f_id airport thisTime
1:    1       a        6
2:    2       a        6
3:    1       b        7
4:    1       c        8
5:    2       d        7
6:    1       d        9
7:    2       e        8

> tables()
     NAME      NROW NCOL MB COLS                  KEY             
[1,] dt           3    3  1 t_id,airport,thisTime airport,thisTime
[2,] dt_lookup    7    3 …
Run Code Online (Sandbox Code Playgroud)

join r data.table

15
推荐指数
1
解决办法
2704
查看次数

R Data.Table加入条件

我有两个表,我想以一种等同于以下SQL的方式连接在一起,在这里我加入多个条件,而不仅仅是相等.

require(sqldf)
require(data.table)

dt <- data.table(num=c(1, 2, 3, 4, 5, 6), 
char=c('A', 'A', 'A', 'B', 'B', 'B'), 
bool=c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE))

dt_two <- data.table(
num =c(6, 1, 5, 2, 4, 3), 
char=c('A', 'A', 'A', 'B', 'B', 'B'), 
bool=c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE))


dt_out_sql <- sqldf('
    select dtone.num, dtone.char, dtone.bool, SUM(dttwo.num) as SUM,  
   MIN(dttwo.num) as MIN
    from dt as dtone INNER join dt_two as dttwo on 
    (dtone.char = dttwo.char) and 
    (dtone.num >= dttwo.num OR dtone.bool)
GROUP BY dtone.num, …
Run Code Online (Sandbox Code Playgroud)

r data.table

10
推荐指数
2
解决办法
2980
查看次数

使用不等式表达式的内连接

背景

(问题不是必需的,但可能对阅读有用)

使用重复键在data.table上滚动连接

加入多个条件时的奇怪行为

数据

library(data.table)   ## using version 1.9.6
## arrival timetable
dt_arrive <- structure(list(txn_id = c(1L, 1L, 1L, 1L, 1L), place = c("place_a", 
"place_a", "place_a", "place_a", "place_a"), arrival_minutes = c(515, 
534, 547, 561, 581), journey_id = 1:5), .Names = c("txn_id", 
"place", "arrival_minutes", "journey_id"), class = c("data.table", 
"data.frame"), row.names = c(NA, -5L), sorted = c("txn_id", 
"place"))

## departure timetable
dt_depart <- structure(list(txn_id = c(1L, 1L, 1L, 1L), place = c("place_a", 
"place_a", "place_a", "place_a"), arrival_minutes = c(489, 507, 
519, 543), …
Run Code Online (Sandbox Code Playgroud)

r data.table

8
推荐指数
1
解决办法
320
查看次数

标签 统计

data.table ×3

r ×3

join ×1