使用`on`和`by`从两个data.tables

时间:2016-08-08 08:42:07

标签: r data.table

为什么在合并后从两个by计算新变量时我无法使用data.tables

示例数据集:

library(data.table)
set.seed(1)

# Example datasets.
dt1 <- data.table(id=1:10,
                  var=rnorm(10))

dt2 <- data.table(id=c(2, 4, 5, 6, 8),
                  color=sample(1:2, 5, replace=TRUE),
                  group=sample(c("a", "b"), 5, replace=TRUE))

# Join on ID.
dt1[dt2, on="id"]

#    id        var     newVar color group
# 1:  2  0.1836433  0.3672866     2     a
# 2:  4  1.5952808  1.5952808     1     a
# 3:  5  0.3295078  0.6590155     2     a
# 4:  6 -0.8204684 -0.8204684     1     b
# 5:  8  0.7383247  0.7383247     1     a

似乎group在联接后可用作变量。现在计算dt1dt2个变量的新变量(使用by)。

dt1[dt2, mean(var*color), on="id", by="group"]
# Error in eval(expr, envir, enclos) : object 'group' not found

因为groupvar可见并且来自不同的数据集,因为找不到color,所以无法正常工作吗?这有效:

dt1[dt2, mean(var*color), on="id"]
# [1] 0.5078879

为什么来自color的{​​{1}}可用于计算新变量,但来自dt2的{​​{1}}不是?我尝试过group位于dt2的修改后的示例,但未找到group

0 个答案:

没有答案