使用dplyr :: distinct()时出现R错误问题:“没有适用于'distinct_'的适用方法应用于类“ c('double','numeric')的对象””“

时间:2019-09-19 10:01:59

标签: r dplyr distinct

这是我的示例数据框:

df.ex <- structure(
  list(
    id_1 = c(15796L, 15796L, 15799L, 15799L),
    id_2 = c(61350L,
             351261L, 61488L, 315736L),
    days = c(30.5, 36.4854, 30.5, 30.5)
  ),
  row.names = c(NA,-4L),
  class = "data.frame",
  .Names = c("id_1",
             "id_2", "days")
)

我遇到dplyr::distinct()的错误

Error in UseMethod("distinct_") : no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')"

令人困惑的是,每当我将数据帧传递给函数并指定像这样的列时,它就起作用:distinct(df.ex, days)。但是,如果我像这样创建感兴趣的变量的向量:days_vec <- df.ex$days并将向量作为参数传递给函数,例如:distinct(days_vec),那么我会得到错误。

在我的实际代码中,我需要在dplyr管道中使用distinct,如下所示:

df.ex %>% summarise(distinct_values = distinct(days))

当然,这也不起作用。有谁知道如何克服这个错误?

非常感谢, 彼得

编辑:对于我的主要问题,我需要制作一个汇总表,其中包含days的{​​{1}}的不同值的计数,它看起来像这样:

id_1

我本以为以下内容会有所帮助,但是会返回另一个错误:

result <- tibble(
  id_1 = c(15796, 15799),
  count_distinct_values = c(2, 1)
)

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

也许您可以尝试

df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))

您需要在.内添加distinct,因为它适用于tbl(或数据帧...),我添加了list以显示所有不同的值,而不仅仅是第一个。

另一种方式:

df.ex %>% distinct(distinct_values = days)

根据问题进行更新。我认为这可以解决您的问题:

df.ex %>% group_by(id_1) %>% summarise(distinct_values = n_distinct(days))