相关疑难解决方法(0)

使用`j`选择`x`的连接列及其所有非连接列

我有两个数据表:

library(data.table)
d1 <- data.table(grp = c("a", "c", "b", "a"), val = c(2, 3, 6, 7), y1 = 1:4, y2 = 5:8)

d2 <- data.table(grp = rep(c("a", "b", "c"), 2),
                 from = rep(c(1, 5), each = 3), to = rep(c(4, 10), each = 3), z = 11:16)
Run Code Online (Sandbox Code Playgroud)

我执行一个非等联接,其中'd1'中的'val'值应该落在每个组'grp'的'from'和'to'''''定义的范围内.

d1[d2, on = .(grp, val >= from, val <= to), nomatch = 0]
#    grp val y1 y2 val.1  z
# 1:   a   1  1  5     4 11
# 2:   c   1 …
Run Code Online (Sandbox Code Playgroud)

r data.table

9
推荐指数
1
解决办法
178
查看次数

在没有明确提及的情况下检索列

大家早上好

data.table我发现使用左连接时,当隐式提及列名时,即不提及表(列所在的表)会导致意外的结果,尽管列名是唯一的。

虚拟数据

x <- data.table(a = 1:2); x
#    a
# 1: 1
# 2: 2
y <- data.table(c = 1
                ,d = 2); y 
#    c d
# 1: 1 2
Run Code Online (Sandbox Code Playgroud)

左连接在检索列 c 时不提及表名

z <- y[x, on=.(c=a), .(a,c,d)];  z
#    a c  d
# 1: 1 1  2
# 2: 2 2 NA
Run Code Online (Sandbox Code Playgroud)

查看上述结果时出现问题。c 列的第 2 行应该是NA. 但是,它显示2 这仅在用户明确提及该表时才得到纠正:

z <- y[x, on=.(c=a), .(a,x.c,d)];  z
#    a x.c  d
# 1: 1 …
Run Code Online (Sandbox Code Playgroud)

r left-join data.table

5
推荐指数
0
解决办法
119
查看次数

标签 统计

data.table ×2

r ×2

left-join ×1