【发布时间】:2021-11-01 13:37:07
【问题描述】:
我有一个如下的数据框:
x1 x2 x3 x4
X A B 4
Y C B 2
Z A C 1
X C B 5
我想根据 x2 和 x3 列的值删除这些重复的行。将保留 x4 列上具有较大值的那个。所以在这种情况下,结果将如下:
x1 x2 x3 x4
X A B 4
Z A C 1
X C B 5
第二行被删除,因为 (C, B) 对出现了两次,第四行被保留,因为 5 > 2 在 x4 列上。
我有以下代码似乎可以正确删除重复项,但最终结果中没有保留 x1 列:
result <- df%>%group_by(x2, x3)%>%summarise(x4=max(x4))
x2 x3 x4
A B 4
A C 1
C B 5
如何将所有列 x1 ... x4 保留在最终结果中?
【问题讨论】:
-
在引用的重复链接中也没有提供两个班轮:这里我们不取消分组:
library(dplyr) df %>% arrange(desc(x4)) %>% distinct(x2,x3, .keep_all = TRUE)
标签: r dataframe dplyr tidyverse