Tidyr: Bagaimana cara bersarang ke dalam daftar-kolom individu vs daftar bingkai data?

Dibuat pada 6 Mei 2016  ·  3Komentar  ·  Sumber: tidyverse/tidyr

Seperti yang diarahkan ( https://github.com/hadley/dplyr/issues/1800 ), saya memposting pertanyaan ini di sini.

Apa cara terbaik untuk melakukan variasi ini dalam menyusun bingkai data? Saya tidak ingin menggunakan tidyr::nest() karena saya tidak ingin variabel lain terkubur dalam bingkai data -- saya menginginkannya sebagai kolom daftar individual. Seperti ini:

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

Sejak itu, saya menemukan cara lain untuk melakukannya menggunakan 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]>

Komentar yang paling membantu

Saya pikir cara paling sederhana mungkin:

library(dplyr)

mtcars %>%
  group_by(cyl) %>%
  summarize(gear = list(gear), wt = list(wt))

Saya tidak yakin apakah ini layak untuk kata kerja tingkat atas yang baru atau tidak.

Bisakah Anda memberikan sedikit lebih banyak info tentang konteks yang lebih luas?

Semua 3 komentar

Saya pikir cara paling sederhana mungkin:

library(dplyr)

mtcars %>%
  group_by(cyl) %>%
  summarize(gear = list(gear), wt = list(wt))

Saya tidak yakin apakah ini layak untuk kata kerja tingkat atas yang baru atau tidak.

Bisakah Anda memberikan sedikit lebih banyak info tentang konteks yang lebih luas?

Cara Anda membuat hasilnya jauh lebih bersih.

Pemicu langsungnya adalah membuat contoh untuk mencari tahu mengapa saya tidak bisa unnest() bingkai data tertentu, yang ternyata menjadi masalah dengan dplyr::combine() (https://github.com/hadley/dplyr/ masalah/1780).

saya akan tutup. Jika ini penting dalam kehidupan nyata, itu akan muncul lagi.

Melihat solusi terakhir membuat saya menyadari summarise_each() adalah pilihan lain.

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]>
Apakah halaman ini membantu?
0 / 5 - 0 peringkat