在一个具有键值的数据表上调用unique
函数,你将会得到每个分组下唯一的行。在存在重复行时,将会选择第一行。在我需要选择最后一行时(通常是最后的时间交易),我使用.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
你知道更快的方法来完成同样的事情吗?
unique.data.table
和duplicated.data.table
不支持fromLast
参数,就像unique.data.frame
和duplicated.data.frame
一样。 - GSee