当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dplyr group_split 按组分割 DataFrame


[Experimental]

group_split()base::split() 类似,但是:

  • 它使用 group_by() 中的分组结构,因此受数据掩码的约束

  • 它不会根据分组命名列表的元素,因为这只适用于单个字符分组变量。相反,使用 group_keys() 访问定义组的数据帧。

group_split() 主要设计用于处理分组数据帧。您可以传递 ... 来对未分组的数据帧进行分组和拆分,但这通常不是很有用,因为您希望轻松访问组元数据。

用法

group_split(.tbl, ..., .keep = TRUE)

参数

.tbl

一表格。

...

如果.tbl是未分组的数据帧,则分组规范,转发到group_by()

.keep

是否应该保留分组列?

一个小标题列表。每个 tibble 包含关联组的 .tbl 行和所有列,包括分组变量。请注意,这会返回一个 list_of,它比简单列表稍微严格一些,但对于表示每个元素都具有相同类型的列表很有用。

生命周期

group_split() 不稳定,因为您可以通过操作从 tidyr::nest(.by =) 返回的嵌套列来获得非常相似的结果。这还将组 key 全部保留在单个数据结构中。 group_split() 将来可能会被弃用。

也可以看看

其他分组函数:group_by()group_map()group_nest()group_trim()

例子

ir <- iris %>% group_by(Species)

group_split(ir)
#> <list_of<
#>   tbl_df<
#>     Sepal.Length: double
#>     Sepal.Width : double
#>     Petal.Length: double
#>     Petal.Width : double
#>     Species     : factor<fb977>
#>   >
#> >[3]>
#> [[1]]
#> # A tibble: 50 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 40 more rows
#> 
#> [[2]]
#> # A tibble: 50 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species   
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>     
#>  1          7           3.2          4.7         1.4 versicolor
#>  2          6.4         3.2          4.5         1.5 versicolor
#>  3          6.9         3.1          4.9         1.5 versicolor
#>  4          5.5         2.3          4           1.3 versicolor
#>  5          6.5         2.8          4.6         1.5 versicolor
#>  6          5.7         2.8          4.5         1.3 versicolor
#>  7          6.3         3.3          4.7         1.6 versicolor
#>  8          4.9         2.4          3.3         1   versicolor
#>  9          6.6         2.9          4.6         1.3 versicolor
#> 10          5.2         2.7          3.9         1.4 versicolor
#> # ℹ 40 more rows
#> 
#> [[3]]
#> # A tibble: 50 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species  
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>    
#>  1          6.3         3.3          6           2.5 virginica
#>  2          5.8         2.7          5.1         1.9 virginica
#>  3          7.1         3            5.9         2.1 virginica
#>  4          6.3         2.9          5.6         1.8 virginica
#>  5          6.5         3            5.8         2.2 virginica
#>  6          7.6         3            6.6         2.1 virginica
#>  7          4.9         2.5          4.5         1.7 virginica
#>  8          7.3         2.9          6.3         1.8 virginica
#>  9          6.7         2.5          5.8         1.8 virginica
#> 10          7.2         3.6          6.1         2.5 virginica
#> # ℹ 40 more rows
#> 
group_keys(ir)
#> # A tibble: 3 × 1
#>   Species   
#>   <fct>     
#> 1 setosa    
#> 2 versicolor
#> 3 virginica 
源代码:R/group-split.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Split data frame by groups。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。