为什么在合并后从两个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
在联接后可用作变量。现在计算dt1
和dt2
个变量的新变量(使用by
)。
dt1[dt2, mean(var*color), on="id", by="group"]
# Error in eval(expr, envir, enclos) : object 'group' not found
因为group
和var
可见并且来自不同的数据集,因为找不到color
,所以无法正常工作吗?这有效:
dt1[dt2, mean(var*color), on="id"]
# [1] 0.5078879
为什么来自color
的{{1}}可用于计算新变量,但来自dt2
的{{1}}不是?我尝试过group
位于dt2
的修改后的示例,但未找到group
。