【问题标题】:Error using dplyr package in R在 R 中使用 dplyr 包时出错
【发布时间】:2016-10-06 14:46:44
【问题描述】:

我正在使用以下代码通过计算数据集 unique_data 中 x 列中的值并按降序排列计数值来提取关于 x 列的数据摘要。

unique_data %>%
group_by(x) %>%
arrange(desc(count(x)))

但是,当我执行上述代码时,我收到如下错误消息,

错误:“group_by_”没有适用的方法应用于“字符”类的对象

请告诉我我的代码出了什么问题。供您参考,x 列属于字符数据类型。

问候,
磨难

【问题讨论】:

  • 没有显示可重现的示例,不清楚您在哪里得到了错误。一个问题是用desc 包装count(x)(但我们无法测试)
  • @akrun 请找到下面的示例,ID sdf fgh sdf sdf fgf 所以,现在我需要计算我的 ID 列中的不同值。所以,我应该得到输出,sdf 3 fgh 2
  • 我认为countarrange 是问题所在。可能是unique_data %>% group_by(x) %>% count(x) %>% arrange(desc(n)) 或者可以简写为count(unique_data, x) %>% arrange(desc(n))
  • 旁注,我喜欢arrange(-n) 用于颠倒顺序,它很好很干净
  • @akrun 谢谢你的帮助...成功了...

标签: r dplyr


【解决方案1】:

原因是arrange 包裹在count 上。我们需要单独执行此操作。如果我们使用与 OP 帖子中相同的代码,只需将 countarrange 步骤分成两个单独的管道。 count 的输出是频率列“n”(默认情况下),我们 arrange 按降序 (desc) 排序。

unique_data %>% 
          group_by(x) %>% 
          count(x) %>%
          arrange(desc(n))

也不需要group_by。根据?count 文档

tally 是一个方便的 summarise 包装器,它可以调用 n 或 sum(n) 取决于您是第一次计算,还是 重新统计。 count() 类似,但 group_by 也为你做。

所以基于此,我们可以做到

count(unique_data, x) %>%
          arrange(desc(n))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2012-06-12
    • 2017-06-10
    • 2016-06-20
    • 1970-01-01
    • 2023-01-27
    • 2015-08-26
    • 1970-01-01
    相关资源
    最近更新 更多