gpt4 book ai didi

r - unique.data.table 选择最后一行代替第一行

转载 作者:行者123 更新时间:2023-12-04 22:32:23 25 4
gpt4 key购买 nike

在键控 unique 上调用 data.table 您将在每个组中拥有唯一的行。在重复行的情况下,第一个将被采用。当我需要取最后一个(通常是最后一个时间事务)时,我使用 .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

你知道更快的方法吗?

最佳答案

创建一个包含关键变量的唯一组合的 data.table 然后使用 mult = 'last' 加入

使用 .SD 很方便,但很慢。如果您愿意,可以改用 .I

dtu <- unique(dt)[,key(dt), with = FALSE]
dt[dtu, mult = 'last']

或者
 dt[ dt[,  .I[.N], by = key(dt)]$V1]

关于r - unique.data.table 选择最后一行代替第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com