删除dplyr中的重复行时删除的列
但是我如何在这里保留我的删除dplyr中的重复行时删除的列,r,dplyr,R,Dplyr,但是我如何在这里保留我的年份列呢?如评论中所述,您可以在中指定。keep_all=TRUE 您正在根据几个条件选择行,这些条件可以与arrange和slice组合成更少的代码行: dat %>% dplyr::arrange(y, a, p) %>% dplyr::group_by(y) %>% dplyr::filter(a == max(a)) %>% dplyr::filter(p == max(p)) %>% distinct(a, p, y) 或: 此
年份
列呢?如评论中所述,您可以在中指定。keep_all=TRUE
您正在根据几个条件选择行,这些条件可以与arrange
和slice
组合成更少的代码行:
dat %>% dplyr::arrange(y, a, p) %>% dplyr::group_by(y) %>%
dplyr::filter(a == max(a)) %>% dplyr::filter(p == max(p)) %>%
distinct(a, p, y)
或:
此外,如果要选择给定权重的最高值,可以使用top\n
:
dat %>%
group_by(y) %>%
arrange(desc(a), desc(p)) %>%
slice(1)
最后两种方法将保持y=13的1985年,而第一种方法保持1987年。您可能需要指定要为重复值保留的年份(最大或最小值)。添加。将_all=TRUE
保留到不同的。最好使用TRUE
而不是关闭T
,谢谢!我不知道。
library(dplyr)
dat %>%
group_by(y) %>%
arrange(a, p) %>%
slice(n())
dat %>%
group_by(y) %>%
arrange(desc(a), desc(p)) %>%
slice(1)
dat %>%
group_by(y) %>%
top_n(1, a) %>%
top_n(1, p) %>%
distinct(y, a, p, .keep_all = TRUE)