Tidyr: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реВрдЪреА-рдХреЙрд▓рдо рдмрдирд╛рдо рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдХреА рд╕реВрдЪреА рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдордИ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tidyverse/tidyr

рдирд┐рд░реНрджреЗрд╢рд╛рдиреБрд╕рд╛рд░ (https://github.com/hadley/dplyr/issues/1800), рдореИрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдиреЗрд╕реНрдЯ рдХрд░рдиреЗ рдкрд░ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдореИрдВ tidyr::nest() рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЕрдиреНрдп рдЪрд░ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдореЗрдВ рджрдмреЗ рд╣реЛрдВ - рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реВрдЪреА рдХреЙрд▓рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рд╕реНрдЯрдЧ:

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))

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдИ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреНрд░рд┐рдпрд╛ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдХреНрдпрд╛ рдЖрдк рд╡реНрдпрд╛рдкрдХ рд╕рдВрджрд░реНрдн рдкрд░ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╢рд╛рдпрдж рд╣реИ:

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]>
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕