【发布时间】:2021-08-31 02:21:49
【问题描述】:
我有一个包含以下信息的 data.table:
data.table(id = c(rep(1,5)),
year = c(rep(2015,3), rep(2016,2)),
class = c(rep("A", 3), rep("B", 2)),
origin = c("Europe", "Asia", "Africa", "Europe", "Asia"),
count = c(30299, 3, 34, 2, 800))
id year class origin count
1: 1 2015 A Europe 30299
2: 1 2015 A Asia 3
3: 1 2015 A Africa 34
4: 1 2016 B Europe 2
5: 1 2016 B Asia 800
但是,每个id、year、class 只允许一个位置。这里,第一个组合有三个位置:
1: 1 2015 A Europe 30299
2: 1 2015 A Asia 3
3: 1 2015 A Africa 34
第二个组合有两个位置:
4: 1 2016 B Europe 2
5: 1 2016 B Asia 800
我想更改位置,这样对于每个 id、year、class 组合,将使用具有最高 count 的位置。这应该会产生一个像这样的表:
id year class origin count
1: 1 2015 A Europe 30299
2: 1 2015 A Europe 3
3: 1 2015 A Europe 34
4: 1 2016 B Asia 2
5: 1 2016 B Asia 800
如何做到这一点?我正在考虑将数据表拆分为列表列表,然后应用 lapply,但我确信有更好/更简单的解决方案?有什么提示吗?
【问题讨论】:
标签: r list data.table