对列名称向量使用distinct()

时间:2019-03-19 10:23:47

标签: r dataframe dplyr distinct

我在tibble / data.frame上使用dplyr的distinct()有问题。从文档中很明显,可以通过明确命名列名来使用它。我有一个包含100列以上的数据框,并且只想在子集中使用该功能。我的直觉说我将列名放在向量中,并将其用作与众不同的参数。但是distinct仅使用第一个向量元素

虹膜示例:

data(iris)
library(dplyr)


exclude.columns <- c('Species', 'Sepal.Width')
distinct_(iris, exclude.columns)

这不同于

exclude.columns <- c('Sepal.Width', 'Species')
distinct_(iris, exclude.columns)

我认为此操作没有区别。另一个选择是将data.frame子集化,然后使用distinct,然后再次与排除的列连接。但是我的问题是,是否还有仅使用一个功能的另一种选择?

1 个答案:

答案 0 :(得分:0)

你的目标听起来不清楚。您是否试图获取除 $Species$Sepal.Width 之外的所有列中的所有不同行?如果是这样,那就没有意义了。

假设两行在所有其他变量中都相同,除了 $Sepal.Width。以您描述的方式使用 distinct() 会丢弃第二行,因为它与第一行没有区别。除了它在您忽略的列中。

你需要重新考虑你的目标以及它是否有意义。

如果您只是担心重复行,那么

data %>%
  distinct(across(everything()))

会解决问题。