R 基于列删除重复行,同时保留下一列的最高值

R 基于列删除重复行,同时保留下一列的最高值,r,R,我想删除列x1和x2中的重复项,同时保留x3中较高的值 DF: 预期结果: x1 x2 x3 1 1 3 2 2 5 我已经得到了df[!duplicated(df[,c(1,2)],],但它显示的是x3的最低值。我想得到最高的x3值 提前谢谢 您可以使用前两列进行分组 aggregate(x3 ~ x1 + x2, df, max) # x1 x2 x3 # 1 1 1 3 # 2 2 2 5 如果要在多个列中查找最大值,可以使用cbind()将变

我想删除列x1和x2中的重复项,同时保留x3中较高的值

DF:

预期结果:

x1  x2  x3 
 1   1   3
 2   2   5
我已经得到了df[!duplicated(df[,c(1,2)],],但它显示的是x3的最低值。我想得到最高的x3值

提前谢谢

您可以使用前两列进行分组

aggregate(x3 ~ x1 + x2, df, max)
#   x1 x2 x3
# 1  1  1  3
# 2  2  2  5
如果要在多个列中查找最大值,可以使用
cbind()
将变量添加到公式的左侧。比如说,

aggregate(cbind(x3, x4, x5) ~ x1 + x2, df, max)

使用
dplyr
软件包:

library(dplyr)
df %>% group_by(x1,x2) %>% summarise(x3 = max(x3))
为了清晰起见,您可以将最大变量命名为“maxOfx3”或类似名称

编辑:如果您有需要其最大值的其他变量,可以将它们包含在
summary()
调用中:


df%>%按(x1,x2)分组%>%总结(x3=max(x3),x4=max(x4),x5的平均值=mean(x5))
等。

另一种选择是
数据。表

library(data.table)
dt <- data.table(DF)

dt[,.SD[which.max(x3)],by=list(x1, x2)]

   x1 x2 x3
1:  1  1  3
2:  2  2  5
库(data.table)

dt如果在末尾有多个列(x4,x5),该怎么办?我可以指定从哪个列中获取最大值吗?
library(data.table)
dt <- data.table(DF)

dt[,.SD[which.max(x3)],by=list(x1, x2)]

   x1 x2 x3
1:  1  1  3
2:  2  2  5