Awe*_*weq 2 r dataframe dplyr tidyverse
我有一个数据框如下:
x1 x2 x3 x4
X A B 4
Y C B 2
Z A C 1
X C B 5
Run Code Online (Sandbox Code Playgroud)
我想删除基于列 x2 和 x3 的值重复的行。x4 列中具有较大值的值将被保留。所以在这种情况下,结果将如下:
x1 x2 x3 x4
X A B 4
Z A C 1
X C B 5
Run Code Online (Sandbox Code Playgroud)
第二行被删除,因为对 (C, B) 出现了两次,第四行被保留,因为列 x4 上 5 > 2。
我有以下代码,似乎可以正确删除重复项,但不会将列 x1 保留在最终结果中:
result <- df%>%group_by(x2, x3)%>%summarise(x4=max(x4))
x2 x3 x4
A B 4
A C 1
C B 5
Run Code Online (Sandbox Code Playgroud)
如何将所有列 x1 ... x4 保留在最终结果中?
您可以按 x2 和 x3 分组并使用slice(),即
library(dplyr)
df %>%
group_by(x2, x3) %>%
slice(which.max(x4))
# A tibble: 3 x 4
# Groups: x2, x3 [3]
x1 x2 x3 x4
<chr> <chr> <chr> <int>
1 X A B 4
2 Z A C 1
3 X C B 5
Run Code Online (Sandbox Code Playgroud)