在保留所有不同的行时如何指定要排除的列?

时间:2019-02-19 17:15:16

标签: r dplyr tidyverse

如何通过仅指定要排除的列来保留数据帧中除某些列以外的所有不同行。在下面的示例中

library(dplyr)
dat <- data_frame(
    x = c("a", "a", "b"),
    y = c("c", "c", "d"),
    z = c("e", "f", "f")
)

我想通过仅指定我要排除列x来返回变量yz中所有不同行的数据帧。返回的数据框应看起来像是从此处返回的数据框

dat %>% distinct(x, y)

您认为您可以执行以下操作,但会导致错误

dat %>% distinct(-z)

我更喜欢tidyverse解决方案

2 个答案:

答案 0 :(得分:7)

只需:

library(dplyr)

dat %>%
  distinct_at(vars(-z))

输出:

# A tibble: 2 x 2
  x     y    
  <chr> <chr>
1 a     c    
2 b     d    

并确保将dplyr的版本更新为最新的CRAN

答案 1 :(得分:1)

我们可以使用

dat %>% 
    distinct(!!! rlang::syms(setdiff(names(.), "z")))
# A tibble: 2 x 2
#  x     y    
#  <chr> <chr>
#1 a     c    
#2 b     d