代码之家  ›  专栏  ›  技术社区  ›  Dima Lituiev Tom Roth

dplyt::符合因素和特征

  •  0
  • Dima Lituiev Tom Roth  · 技术社区  · 5 年前

    我在运行dplyr::tally时遇到问题,原因和角色

    > data %>% dplyr::tally(true_label)
    Error: Problem with `summarise()` column `n`.
    ℹ `n = sum(true_label, na.rm = TRUE)`.
    x ‘sum’ not meaningful for factors
    Run `rlang::last_error()` to see where the error occurred.
    
    > rlang::last_error()
    <error/dplyr_error>
    Problem with `summarise()` column `n`.
    ℹ `n = sum(true_label, na.rm = TRUE)`.
    x ‘sum’ not meaningful for factors
    Backtrace:
      1. data %>% dplyr::tally(true_label)
     12. base::.handleSimpleError(...)
     13. dplyr:::h(simpleError(msg, call))
    Run `rlang::last_trace()` to see the full context
    
    
    > data %>% dplyr::tally(as.character(true_label))
    Error: Problem with `summarise()` column `n`.
    ℹ `n = sum(as.character(true_label), na.rm = TRUE)`.
    x invalid 'type' (character) of argument
    Run `rlang::last_error()` to see where the error occurred.
    
    
    > rlang::last_error()
    <error/dplyr_error>
    Problem with `summarise()` column `n`.
    ℹ `n = sum(as.character(true_label), na.rm = TRUE)`.
    x invalid 'type' (character) of argument
    Backtrace:
      1. data %>% dplyr::tally(as.character(true_label))
     10. base::.handleSimpleError(...)
     11. dplyr:::h(simpleError(msg, call))
    Run `rlang::last_trace()` to see the full context.
    

    这也失败了:

    > data %>% group_by(true_label) %>% summarise(n_label = n())
    Error: `n()` must only be used inside dplyr verbs.
    Run `rlang::last_error()` to see where the error occurred.
    

    其他例子:

    diamonds %>% tally(cut)
    
    diamonds %>% group_by(as.factor(cut)) %>% summarise(n_label = n())
    
    

    我相信 summarise 是dplyr动词,不是吗?

    计算因素和人物的官方方法是什么?

    dplyr版本1.0.7

    1 回复  |  直到 5 年前
        1
  •  0
  •   Eric Leung user3791304    5 年前

    您不需要将任何附加参数传递给 tally() .你只需要 group_by() 使用分类列进行统计。

    library(dplyr)
    
    iris %>%
      group_by(Species) %>%
      tally()
    #> # A tibble: 3 x 2
    #>   Species        n
    #>   <fct>      <int>
    #> 1 setosa        50
    #> 2 versicolor    50
    #> 3 virginica     50
    

    于2021年8月6日由 reprex package (v2.0.0)