这是我的示例数据框:
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)
)
任何想法都将不胜感激。
答案 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))