【问题标题】:dplyr::tally with factors and charactersdplyr::tally 与因素和字符
【发布时间】:2021-08-06 18:24:02
【问题描述】:

我在对因子和字符运行 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

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 data 是 data.frame 还是 tibble?还是只是一个字符向量?你目前加载了哪些包?也许你已经加载了一个重新定义summarise的包
  • diamonds %&gt;% group_by(as.factor(cut)) %&gt;% summarise(n_label = n()) 对我来说很好,没有任何错误。你有plyr 加载吗?尝试使用dplyr::summarise。你也可以dplyr::count(diamonds, cut)

标签: r dplyr cran


【解决方案1】:

您不需要将任何其他参数传递给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

reprex package (v2.0.0) 于 2021-08-06 创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2015-08-11
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多