我有一个如下数据框:
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
谢谢!
答案 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]