首页 > 解决方案 > R - 如何在 group_by 期间拆分为 terciles

问题描述

假设我们要根据萼片宽度的 tercile 组计算萼片长度的平均值。

我们可以使用包中的split_quantile函数fabricatr并执行以下操作:

iris %>% 
    group_by(split_quantile(Sepal.Width, 3)) %>% 
    summarise(Sepal.Length = mean(Sepal.Length))

到目前为止,一切都很好。现在,假设我们想要group_by(Species, split_quantile(Sepal.Width, 3))而不是仅仅group_by(split_quantile(Sepal.Width, 3)).

但是,如果我们希望在每个物种类型内部而不是一般情况下计算三分位数怎么办?

基本上,我正在寻找的可以通过拆分iris为基于 的几个数据帧来实现,在这些数据帧上Species使用split_quantile这些数据帧来计算三分位数,然后将数据帧重新连接在一起。但是,我正在寻找一种拆分数据框的方法。

标签: r

解决方案


您已经在文本中写下了答案,但是您可以在按物种分组后为 tercile 创建一个新变量,然后用Species和重新组合Tercile

library(tidyverse)
library(fabricatr)
iris %>% 
    group_by(Species) %>%
    mutate(Tercile = split_quantile(Sepal.Width, 3)) %>%
    group_by(Species, Tercile) %>%
    summarise(Sepal.Length = mean(Sepal.Length))
#> # A tibble: 9 x 3
#> # Groups:   Species [3]
#>   Species    Tercile Sepal.Length
#>   <fct>      <fct>          <dbl>
#> 1 setosa     1               4.69
#> 2 setosa     2               5.08
#> 3 setosa     3               5.27
#> 4 versicolor 1               5.61
#> 5 versicolor 2               6.12
#> 6 versicolor 3               6.22
#> 7 virginica  1               6.29
#> 8 virginica  2               6.73
#> 9 virginica  3               6.81

reprex 包(v0.3.0)于 2020-05-27 创建


推荐阅读