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 ]
非常に遅く、どうすればこれを改善できるか疑問に思っています。どんな助けでも大歓迎です。