2

data.table私がこのように見えるとしましょう:

dt <- data.table(
  a   = c( "A", "B", "C", "C" ),
  b   = c( "U", "V", "W", "X" ),
  c   = c( 0.1, 0.2, 0.3, 0.4 ),
  min = c( 0,   1,   2,   3 ),
  max = c( 11,  12,  13,  14 ),
  val = c( 100, 200, 300, 400 ),
  key = "a"
)

私の実際data.tableには、はるかに多くの列があり、最大で数百万行あります。行の約 10% に重複したキーがありますa。次のような関数で集計したい行:

comb <- function( x ){
  k <- which.max( x[ ,c ]  )
  list( b = x[ k, b ], c = x[ k, c ], min = min( x[ , min ] ), max = max( x[ , max ] ), val = sum( x[ ,val ] ) )
}

ただし、呼び出し

dt <- dt[ , comb(.SD), by = a ]

非常に遅く、どうすればこれを改善できるか疑問に思っています。どんな助けでも大歓迎です。

4

1 に答える 1