gpt4 book ai didi

r - data.table:索引的子集

转载 作者:行者123 更新时间:2023-12-04 20:07:58 24 4
gpt4 key购买 nike

在下面的数据表中,我想选择具有唯一 id 的行和列 pos2 中的最小值:

dt = data.table(id = c(1,2,2,3,3,3),
pos1 = c(0.1, 0.2, 0.2, 0.3, 0.3, 0.3),
pos2 = c(0.1, 0.25, 0.21, 0.34, 0.31, 0.32))

id pos1 pos2
1: 1 0.1 0.10
2: 2 0.2 0.25
3: 2 0.2 0.21
4: 3 0.3 0.34
5: 3 0.3 0.31
6: 3 0.3 0.32

我现在的做法是创建一个中间表:
dt.red = dt[, .(pos2 = first(sort(pos2))), by = id]

id pos2
1: 1 0.10
2: 2 0.21
3: 3 0.31

然后我合并以获得所需的 最终结果 :
merge(dt, dt.red)

id pos2 pos1
1: 1 0.10 0.1
2: 2 0.21 0.2
3: 3 0.31 0.3

是否有使用 data.table 实现这一目标的更简洁的方法?

最佳答案

也可以在没有 .I 的情况下执行此操作,但它会更慢*

dt[order(pos2), head(.SD, 1), id]
# id pos1 pos2
# 1: 1 0.1 0.10
# 2: 2 0.2 0.21
# 3: 3 0.3 0.31

*也许不是,请参阅下面的评论

关于r - data.table:索引的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55279423/

24 4 0