如何通过列A在R中创建唯一,并在B列中保留具有最大值的行

bio*_*ojl 4 r unique

我有一个包含多列的data.frame(17).第2列有几行具有相同的值,我想只保留其中一行,特别是第17列中具有最大值的行.

例如:

A    B
'a'  1
'a'  2
'a'  3
'b'  5
'b'  200

Would return
A    B
'a'  3
'b'  200
Run Code Online (Sandbox Code Playgroud)

(加上其他列)

到目前为止,我一直在使用这个独特的功能,但我认为它会随机保留一个或保留第一个出现的功能.

**更新**真实数据有376000行.我已经尝试了data.table和ddply建议,但它们需要永远.任何最有效的想法?

Rol*_*and 6

使用包的解决方案data.table:

set.seed(42)
dat <- data.frame(A=c('a','a','a','b','b'),B=c(1,2,3,5,200),C=rnorm(5))
library(data.table)

dat <- as.data.table(dat)
dat[,.SD[which.max(B)],by=A]

   A   B         C
1: a   3 0.3631284
2: b 200 0.4042683
Run Code Online (Sandbox Code Playgroud)