我想在data.table连接中使用i表的列进行计算和分组.这种语法似乎有一些限制.你能建议一个更干净的方法吗?
require(data.table)
set.seed(1)
Run Code Online (Sandbox Code Playgroud)
表格1
DT1 <- data.table(loc = c("L1","L2"), product = c("P1","P2","P3"), qty = runif(12))
Run Code Online (Sandbox Code Playgroud)
表2
DT2 <- data.table(product = c("P1","P2","P3"), family = c("A","A","B"), price = c(5,7,10))
Run Code Online (Sandbox Code Playgroud)
表上的直接连接很好:[这里不是问题,但是在on子句中使用引用的列名称的要求似乎与data.table不一致]
DT1[DT2, on = "product"]
# loc product qty family price
# 1: L1 P1 0.1297134 A 5
# 2: L2 P1 0.2423550 A 5
# 3: L1 P1 0.3421633 A 5
# 4: L2 P1 0.6537663 A 5
# 5: L2 P2 0.9822407 A 7
# 6: L1 P2 0.8568853 …Run Code Online (Sandbox Code Playgroud) 我有两个data.table具有相同的结构.两个关键列后跟多个数据列.数据列的数量可能会有所不同.我想将第二个data.table中的值添加到第一个data.table中的相应行/列.
DT1 <- cbind(data.table(loc=c("L1","L2","L3"), product=c("P1","P2","P1")), matrix(10,nrow=3,ncol=12))
setkey(DT1, loc, product)
DT1
loc product V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
1: L1 P1 10 10 10 10 10 10 10 10 10 10 10 10
2: L2 P2 10 10 10 10 10 10 10 10 10 10 10 10
3: L3 P1 10 10 10 10 10 10 10 10 10 10 10 10
DT2 <- cbind(data.table(loc=c("L2","L3"), product=c("P2","P1")), matrix(1:24,nrow=2,ncol=12))
setkey(DT2, loc, product)
loc product V1 …Run Code Online (Sandbox Code Playgroud)