如何找到唯一值并返回相应的最大值?

时间:2016-09-18 08:41:28

标签: r

我有一个如下数据框:

X1 X2
a  1 
a  2 
a  3
b  4
b  5
b  1
c  4
c  4
c  6
d  1
d  0
e  6
e  8
e  9

首选输出数据框从第一列返回唯一值,从第二列返回相应的最大值,如下所示。

X1 X2
a  3
b  5
c  6
d  1
e  9

谢谢!

1 个答案:

答案 0 :(得分:0)

这可以通过一组操作来完成。在base R中,aggregate执行此操作

aggregate(X2~X1, df1, max)
#  X1 X2
#1  a  3
#2  b  5
#3  c  6
#4  d  1
#5  e  9

dplyr

library(dplyr)
df1 %>%
    group_by(X1) %>%
    summarise(X2= max(X2))

data.table

library(data.table)
setDT(df1)[, .(X2= max(X2)), by = X1]

更快的选择是order'X2'降序并选择每个'X1'的第一个观察

setDT(df1)[order(-X2, X1), head(.SD, 1), by = X1]