【发布时间】:2013-08-05 13:05:53
【问题描述】:
> library(data.table)
> A <- data.table(x = c(1,1,2,2), y = c(1,2,1,2), v = c(0.1,0.2,0.3,0.4))
> A
x y v
1: 1 1 0.1
2: 1 2 0.2
3: 2 1 0.3
4: 2 2 0.4
> B <- dcast(A, x~y)
Using v as value column: use value.var to override.
> B
x 1 2
1 1 0.1 0.2
2 2 0.3 0.4
显然,我可以使用 f.x 将 data.table 从长到宽重塑。包 reshape2 的 dcast。但是 data.table 带有一个重载的括号运算符,提供像“by”和“group”这样的参数,这让我想知道是否可以使用它来实现它(到 data.table 特定功能)?
手册中的一个随机示例:
DT[,lapply(.SD,sum),by=x]
这看起来很棒 - 但我还不完全了解它的用法。
我既没有找到方法也没有找到例子,所以也许这是不可能的,也许它甚至不应该是 - 所以,一个明确的“不,不可能,因为......”当然也是一个有效的答案。
【问题讨论】:
-
请看here。
-
抱歉,我不明白这与我的问题有什么关系。另请注意,B 的列类别动态取决于 A,因此“y”值的数量可能因情况而异。
标签: r data.table