R 基于列删除重复行,同时保留下一列的最高值
我想删除列x1和x2中的重复项,同时保留x3中较高的值 DF: 预期结果: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
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