Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除dplyr中的重复行时删除的列_R_Dplyr - Fatal编程技术网

删除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)