管道内的hist()和dplyr中的group_by

时间:2018-01-18 22:20:30

标签: r dplyr histogram

我正在寻找一种方法来利用dplyr的{​​{1}}功能进行计数,并在grouping_by {{{{}}之后使用group_by的无绘图直方图1}}和mpg

我的代码是:

gear

错误是:

  

summarise_impl(.data,dots)中的错误:   列hist(mpg,plot = FALSE,breaks = c(seq(10,40,1)))`必须是长度1(摘要值),而不是6

我并不仅限于vs,而是我现在熟悉的所有内容。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我不确定无图直方图是什么,但这有帮助吗?

mtcars %>%
    mutate(mpgClasses = cut(mpg, 10:40)) %>%
    group_by(gear, vs, mpgClasses) %>%
    summarise(n())

你也可以重新安排一下这个

mtcars %>%
    mutate(mpgClasses = cut(mpg, 10:40)) %>%
    group_by(gear, vs, mpgClasses) %>%
    summarise(counts = n()) %>%
    spread(mpgClasses, counts)

如果您能够进一步描述一下,我们可以找到更好的解决方案。

答案 1 :(得分:0)

在这里,我只是从counts中提取hist。因为我必须为每个组制作一个元素,所以我把它作为一个列表。

library(dplyr)
x <- mtcars %>% group_by(gear,vs) %>%     
   summarise(counts = n(),
             hcounts =  list(hist(mpg, plot = FALSE, breaks = c(seq(10,40,1)))$counts))

x
# # A tibble: 6 x 4
# # Groups:   gear [?]
# gear    vs counts    hcounts
# <dbl> <dbl>  <int>     <list>
#   1     3     0     12 <int [30]>
#   2     3     1      3 <int [30]>
#   3     4     0      2 <int [30]>
#   4     4     1     10 <int [30]>
#   5     5     0      4 <int [30]>
#   6     5     1      1 <int [30]>

x$hcounts
# [[1]]
# [1] 2 0 0 1 2 3 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# 
# [[2]]
# [1] 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# 
# [[3]]
# [1] 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# 
# [[4]]
# [1] 0 0 0 0 0 0 0 1 0 1 0 1 2 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0
# 
# [[5]]
# [1] 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# 
# [[6]]
# [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0