根据列删除重复行,同时保持下一列的最高值

ant*_*ant 1 r

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

DF:

x1  x2  x3
 1   1   1
 1   1   2
 1   1   3
 2   2   2
 2   2   5   
Run Code Online (Sandbox Code Playgroud)

预期结果:

x1  x2  x3 
 1   1   3
 2   2   5
Run Code Online (Sandbox Code Playgroud)

我已经达到df [!duplicated(df [,c(1,2)]),]但它显示的是x3的最低值.我想得到最高的x3值.

提前谢谢.

Ric*_*ven 6

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

aggregate(x3 ~ x1 + x2, df, max)
#   x1 x2 x3
# 1  1  1  3
# 2  2  2  5
Run Code Online (Sandbox Code Playgroud)

如果要在多个列中找到最大值,可以将变量添加到公式的左侧cbind().例如,

aggregate(cbind(x3, x4, x5) ~ x1 + x2, df, max)
Run Code Online (Sandbox Code Playgroud)


Sam*_*rke 5

使用dplyr包:

library(dplyr)
df %>% group_by(x1,x2) %>% summarise(x3 = max(x3))
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,您可以将最大变量命名为“maxOfx3”或类似名称。

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

df %>% group_by(x1,x2) %>% summarise(x3 = max(x3), x4 = max(x4), avg_of_x5 = mean(x5)) 等等。