【发布时间】:2019-07-01 22:18:51
【问题描述】:
问题:
data.table 等效于tidyr 的complete 命令with group by 是什么?
on和by对于data.table有什么关系?
示例:
dt=data.table(a = c(1,1,2,2,3,3,4,4) , b = c(4,5,6,7,8,9,10,11) , c = c("x","x","x","x","y","y","y","y"))
show(dt)
a b c
1: 1 4 x
2: 1 5 x
3: 2 6 x
4: 2 7 x
5: 3 8 y
6: 3 9 y
7: 4 10 y
8: 4 11 y
目标是获得以下内容:
a b c
1 4 x
1 5 x
1 6 x
1 7 x
2 4 x
2 5 x
2 6 x
2 7 x
3 8 y
3 9 y
3 10 y
3 11 y
4 8 y
4 9 y
4 10 y
4 11 y
大概是这样的:
setDT(dt)[CJ(a=a,b=b,unique=TRUE), on=.(a,b) , by = .(c)]
但它不起作用,data.table 文档在这方面的语法方面很薄。
解决方案不足:
以下 SO 帖子解决了类似的问题,但在此上下文中未提供足够的解决方案。
-
data.table equivalent of complete/fill from tidyr(无群组
by) -
data.table equivalent of tidyr::complete()(无群组
by) -
data.table equivalent of tidyr::complete with group_by(特定于问题,实际上不适用于
by命令)
【问题讨论】:
标签: r group-by data.table tidyr