unique.data.table selecciona la última fila en lugar de la primera
vocaciónunique
en una llavedata.table
Tendrás líneas únicas para cada grupo. En caso de líneas duplicadas se tomará la primera. Cuando necesito la toma la última, en lugar de la última transacción temporal que uso.SD[.N]
library(data.table)
library(microbenchmark)
dt <- data.table(id=sample(letters, 10000, T), var=rnorm(10000), key="id")
microbenchmark(unique(dt), dt[, .SD[.N], by=id])
Unit: microseconds
expr min lq median uq max neval
unique(dt) 570.882 586.1155 595.8975 608.406 3209.122 100
dt[, .SD[.N], by = id] 6532.739 6637.7745 6694.3820 6776.968 208264.433 100
¿Sabes una forma más rápida de hacer lo mismo?