假设我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% 的行有一个重复的 key 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 ]
非常慢,我想知道如何改进这一点。任何帮助表示赞赏。