我有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部分。
答案 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