Как указано (https://github.com/hadley/dplyr/issues/1800), я публикую этот вопрос здесь.
Как лучше всего сделать этот вариант вложения фрейма данных? Я не хотел использовать tidyr::nest()
потому что не хотел, чтобы другие переменные были похоронены во фреймах данных - я хотел, чтобы они были отдельными столбцами списка. Sthg как это:
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarize(gear = split(gear, cyl),
wt = split(wt, cyl))
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 4 <dbl [11]> <dbl [11]>
#> 2 6 <dbl [7]> <dbl [7]>
#> 3 8 <dbl [14]> <dbl [14]>
С тех пор я нашел другой способ сделать это, используя purrr::transpose()
:
library(purrr)
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl) %>%
nest(gear, wt) %>%
bind_cols(transpose(.$data)) %>%
select(-data)
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 6 <dbl [7]> <dbl [7]>
#> 2 4 <dbl [11]> <dbl [11]>
#> 3 8 <dbl [14]> <dbl [14]>
Думаю, самый простой способ:
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarize(gear = list(gear), wt = list(wt))
Я не уверен, достойно ли это нового глагола верхнего уровня или нет.
Не могли бы вы дать немного больше информации о более широком контексте?
Ваш способ создать результат намного чище.
Непосредственным триггером было создание примеров, чтобы выяснить, почему я не мог unnest()
определенных фреймов данных, что оказалось проблемой с dplyr::combine()
(https://github.com/hadley/dplyr/ выпусков / 1780).
Я закрою. Если это имеет значение в реальной жизни, это произойдет снова.
Увидев последнее решение, я понял, что summarise_each()
- еще один вариант.
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise_each("list", gear, wt)
#> Source: local data frame [3 x 3]
#>
#> cyl gear wt
#> <dbl> <list> <list>
#> 1 4 <dbl [11]> <dbl [11]>
#> 2 6 <dbl [7]> <dbl [7]>
#> 3 8 <dbl [14]> <dbl [14]>
Самый полезный комментарий
Думаю, самый простой способ:
Я не уверен, достойно ли это нового глагола верхнего уровня или нет.
Не могли бы вы дать немного больше информации о более широком контексте?