Правильный / самый быстрый способ изменить форму data.table

У меня есть таблица данных в R:

library(data.table)
set.seed(1234)
DT <- data.table(x=rep(c(1,2,3),each=4), y=c("A","B"), v=sample(1:100,12))
DT
      x y  v
 [1,] 1 A 12
 [2,] 1 B 62
 [3,] 1 A 60
 [4,] 1 B 61
 [5,] 2 A 83
 [6,] 2 B 97
 [7,] 2 A  1
 [8,] 2 B 22
 [9,] 3 A 99
[10,] 3 B 47
[11,] 3 A 63
[12,] 3 B 49

Я легко могу суммировать переменную v по группам в таблице data.table:

out <- DT[,list(SUM=sum(v)),by=list(x,y)]
out
     x  y SUM
[1,] 1 A  72
[2,] 1 B 123
[3,] 2 A  84
[4,] 2 B 119
[5,] 3 A 162
[6,] 3 B  96

Однако я бы хотел, чтобы группы (y) были столбцами, а не строками. Я могу сделать это с помощью reshape :

out <- reshape(out,direction='wide',idvar='x', timevar='y')
out
     x SUM.A SUM.B
[1,] 1    72   123
[2,] 2    84   119
[3,] 3   162    96

Есть ли более эффективный способ изменить форму данных после их агрегирования? Есть ли способ объединить эти операции в один шаг, используя операции data.table?

66
задан Zach 2 August 2011 в 13:52
поделиться