R data.table获取具有最大其他id的唯一ID

时间:2018-02-07 19:43:08

标签: r data.table

我有data.table这样:

id | id2 | val
--------------
 1 |   1 |   A
 1 |   2 |   B
 2 |   3 |   C
 2 |   4 |   D
 3 |   5 |   E
 3 |   6 |   F

我想按id列分组,并返回该ID的最大id2。像这样:

id | id2 | val
--------------
 1 |   2 |   B
 2 |   4 |   D
 3 |   6 |   F

在SQL中很容易:

SELECT id, MAX(id2) FROM tbl GROUP BY id;

但我想知道如何使用data.table执行此操作。到目前为止,我有:

tbl[, .(id2 = max(id2)), by = id]

但我不知道如何获得val部分。

1 个答案:

答案 0 :(得分:0)

df <- read.table(header = T, text = "id  id2  val
                 1    1    A
                 1    2    B
                 2    3    C
                 2    4    D
                 3    5    E
                 3    6    F")
library(data.table)
setDT(df)
df[, max_id2 := max(id2), by = id]
df <- df[id2 == max_id2, ]
df[, max_id2 := NULL]




    id id2 val
1:  1   2   B
2:  2   4   D
3:  3   6   F