小编sch*_*h56的帖子

R table.table group by i table的属性

我想在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)

r data.table

7
推荐指数
1
解决办法
176
查看次数

r data.table更新join中的多个列

我有两个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)

join r data.table

3
推荐指数
2
解决办法
445
查看次数

标签 统计

data.table ×2

r ×2

join ×1