如何通过仅指定要排除的列来保留数据帧中除某些列以外的所有不同行。在下面的示例中
library(dplyr)
dat <- data_frame(
x = c("a", "a", "b"),
y = c("c", "c", "d"),
z = c("e", "f", "f")
)
我想通过仅指定我要排除列x
来返回变量y
和z
中所有不同行的数据帧。返回的数据框应看起来像是从此处返回的数据框
dat %>% distinct(x, y)
您认为您可以执行以下操作,但会导致错误
dat %>% distinct(-z)
我更喜欢tidyverse解决方案
答案 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