使用 dplyr::distinct() 时出现 R 错误的问题:"no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')""

Problem with R error when using dplyr::distinct(): "no applicable method for 'distinct_' applied to an object of class "c('double', 'numeric')""

这是我的示例数据框:

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

当然,这也行不通。有谁知道如何克服这个错误?

非常感谢, 彼得

编辑:对于我的实际问题,我需要总结 table,其中包含 days 的不同值的计数,这些值将按 id_1 分组,它看起来像这样:

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

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

result <- df.ex %>% group_by(id_1) %>% summarise(count_distinct_values = count(distinct(., days)))

任何想法将不胜感激。

也许你可以试试

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