Tidyverse:将 tibble 按组分开 df/tibble

Tidyverse: Unnest tibble by group into seperate df/tibble

我目前正在尝试找到一种简短而整洁的方法来将嵌套的 tibble 与 2 个分组变量和 tibble/df 作为每个观察的数据取消嵌套到只有一个分组变量和各自的 tibble df(或tibble)中的数据。我将使用 tidyverse 提供的 starwars 数据集来说明我的示例,并展示我到目前为止提出的 3 个解决方案。

library(tidyverse)

#Set example data: 2 grouping variables, name & sex, and one data column with a tibble/df for each observation
tbl_1 <- starwars %>% group_by(name, sex) %>% nest() %>% ungroup()

#1st Solution: Neither short nor tidy but gets me the result I would like to have in the end
tbl_2 <- tbl_1 %>%
  group_by(sex) %>%
  nest() %>%
  ungroup()%>%
  mutate(data = map(.$data, ~.x %>% group_by(name) %>% unnest(c(data))))

#2nd Solution: A lot shorter and more neat but still not what I have in mind
tbl_2 <- tbl_1 %>%
  nest(-sex) %>%
  mutate(data = map(.$data, ~.x %>% unnest(cols = c(data))))

#3rd Solution: The best so far, short and readable 
tbl_2 <- tbl_1 %>% 
  unnest(data) %>% 
  group_by(name) %>%
  nest(-sex)

##Solution as I have it in mind / I think should be somehow possible.
tbl_2 <- tbl_1 %>% group_by(sex) %>% unnest() #This however gives one large tibble grouped by sex, not two separate tibbles in a nested tibble 

我正在寻找的这种解决方案一开始是否可能,或者第三种解决方案在简短、可读和整洁方面是否尽可能接近?

就我的实际工作流程而言,tbl_1 是我分析的“主力军”,不会更改,我过去常常通过 map 应用分析或 ggplot 获取图表等,有时在“姓名”或“性别”级别。

感谢任何意见!

更新: 用户@caldwellst 已经给出了足够的答案让我将这个问题标记为已回答,不幸的是仅作为评论。稍等片刻后,我现在会接受与将此问题标记为已解决的解决方案具有相同建议的任何其他答案。

正如@caldwellst 在评论中指出的那样,group_by 是不必要的,在这种情况下,提供的解决方案对我来说足够短且足够整洁。 tbl_1 %>% unnest(data) %>% nest(data = -sex).

如果@caldwellst 将评论发布为答案或其他人提供了不同但同样合适的答案,我将删除我的答案并接受另一个答案。