首页 > 解决方案 > 通过组变量有效地扩展 data.table 中的网格

问题描述

我想从data.table. 创建扩展网格的向量由分组变量定义。

这将是我的示例数据集:

library(data.table)
dt_sample <-
    data.table(group = c(rep("a", 4L), "b", "d"), value = LETTERS[1:6])
# example table
print(dt_sample)
#>    group value
#> 1:     a     A
#> 2:     a     B
#> 3:     a     C
#> 4:     a     D
#> 5:     b     E
#> 6:     d     F

我想要实现的是以下内容:

## I would like an automatic if possible one step approach for this
a <- dt_sample[group == "a", value]
b <- dt_sample[group == "b", value]
d <- dt_sample[group == "d", value]

final_result <- CJ(a, b, d, unique = TRUE)
# expanded grid
print(final_result)
#>    a b d
#> 1: A E F
#> 2: B E F
#> 3: C E F
#> 4: D E F

reprex 包(v0.3.0)于 2020 年 1 月 13 日创建

我已经想到了几种方法来做先验,使用dcastfor循环。但是,我感觉它可以在data.table. 欢迎任何建议。

标签: rdata.table

解决方案


split你可以用and做这样的事情do.call

do.call(CJ, split(dt_sample$value, dt_sample$group))

推荐阅读