我在 dplyr 中使用 group_split ,在分割了多个列后,我很难命名列表。
当我们按一列分组时,我知道该怎么做here https://stackoverflow.com/questions/57107721/how-to-name-the-list-of-the-group-split-output-in-dplyr但我不知道当分成两列时如何做到这一点
我无法共享数据,但如果使用 iris 数据集,它将与此类似(在我的情况下,两列都是因素)
iris %>%
group_split(Species, Petal.Width)
Use dplyr::group_keys()
获取分组变量。
library(dplyr)
library(stringr)
# make grouped data frame
iris_group <- iris %>%
group_by(Species, Petal.Width)
# get group keys
group_name_df <- group_keys(iris_group) %>%
mutate(group_name = str_c(as.character(Species),"-",Petal.Width))
# get name for each group
group_name <- group_name_df$group_name
# assign name to each split table
df_list <- group_split(iris_group) %>%
setNames(group_name)
> group_name_df
# A tibble: 27 x 3
Species Petal.Width group_name
<fct> <dbl> <chr>
1 setosa 0.1 setosa-0.1
2 setosa 0.2 setosa-0.2
3 setosa 0.3 setosa-0.3
4 setosa 0.4 setosa-0.4
5 setosa 0.5 setosa-0.5
6 setosa 0.6 setosa-0.6
7 versicolor 1 versicolor-1
8 versicolor 1.1 versicolor-1.1
9 versicolor 1.2 versicolor-1.2
10 versicolor 1.3 versicolor-1.3
# ... with 17 more rows
> df_list
$`setosa-0.1`
# A tibble: 5 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 4.9 3.1 1.5 0.1 setosa
2 4.8 3 1.4 0.1 setosa
3 4.3 3 1.1 0.1 setosa
4 5.2 4.1 1.5 0.1 setosa
5 4.9 3.6 1.4 0.1 setosa
$`setosa-0.2`
# A tibble: 29 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
.
.
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)