[英]Nest dataframe within a nested dataframe
我搜索了這個解決方案: Double nesting in the tidyverse然而,這似乎改變了外嵌套的附加列。 然而,我想嵌套在嵌套列表中,並繼續嵌套。
通過遵循該參考文章中的解決方案,我得到:
> outerNest %>% mutate(by_vs = map(data, ~.x %>%
+ group_by(am) %>%
+ nest()))
# A tibble: 2 × 3
# Groups: vs [2]
vs data by_vs
<dbl> <list> <list>
1 0 <tibble [18 × 11]> <grouped_df [2 × 2]>
2 1 <tibble [14 × 11]> <grouped_df [2 × 2]>
我在哪里嘗試過以下內容:
outerNest %>% group_by(vs) %>% mutate_at(vars(matches("data")), map(.,function(x){map(x, function(y){ y %>% group_by(am) %>% nest()})}))
這會產生此錯誤:
UseMethod(“group_by”)中的錯誤:沒有適用於“group_by”的方法應用於 class“c('double','numeric')”的 object
select data
作為迭代嵌套的列似乎存在問題。然而,如果我 select 單獨列:
outerNest %>% group_by(vs) %>% .['data'] %>% map(.,function(x){map(x, function(y){ y %>% group_by(am) %>% nest()})})
$data
$data[[1]]
# A tibble: 2 × 2
# Groups: am [2]
am data
<dbl> <list>
1 1 <tibble [6 × 10]>
2 0 <tibble [12 × 10]>
$data[[2]]
# A tibble: 2 × 2
# Groups: am [2]
am data
<dbl> <list>
1 1 <tibble [7 × 10]>
2 0 <tibble [7 × 10]>
然而,這應該嵌套在 vs` 旁邊的data
中。 預期的 output:
#most outer nest
# A tibble: 2 × 2
# Groups: vs [2]
vs data
<dbl> <list>
1 0 <tibble [18 × 11]>
2 1 <tibble [14 × 11]>
#inner nest
# A tibble: 2 × 2
# Groups: am [2]
am data
<dbl> <list>
1 1 <tibble [13 × 20]>
2 0 <tibble [19 × 20]>
我們可以使用
library(purrr)
library(dplyr)
outerNest %>%
ungroup %>%
mutate(data = map(data, ~ .x %>%
nest(data = -am)))
如果需要進一步嵌套
out <- outerNest %>%
ungroup %>%
mutate(data = map(data, ~ .x %>%
nest(data = -am) %>%
mutate(data = map(data, ~ .x %>%
nest(data = -gear)))))
-檢查
> out$data[[1]]
# A tibble: 2 × 2
am data
<dbl> <list>
1 1 <tibble [2 × 2]>
2 0 <tibble [1 × 2]>
> out$data[[1]]$data
[[1]]
# A tibble: 2 × 2
gear data
<dbl> <list>
1 4 <tibble [2 × 9]>
2 5 <tibble [4 × 9]>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.