我想从列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值.
提前谢谢.
您可以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)
使用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)) 等等。