使用 tidyr unnes_wider 从 tibble 取消嵌套多个 columns-list
Unnest multiple columns-list from tibble with tidyr unnes_wider
这是我的小标题:
my_tibble<-tibble(Level = list(c(10,20),c(10,20)),Level2 = list(c(30,40),c(50,20)),Level3 = list(c(330,430),c(530,33)))
我想使用 unnest_wider 取消嵌套所有列:Level
、Level2
、Level3
.
我正在这样做:unnest_wider(my_tibble,Level,Level2,Level3)
当然没有用。
我该怎么做?
我们可以使用 unlist2d
和 map
library(purrr)
library(collapse)
map_dfc(my_tibble, ~ unlist2d(.x) %>%
select(-1)) %>%
set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))
-输出
# Level_1 Level_2 Level2_1 Level2_2 Level3_1 Level3_2
#1 10 20 30 40 330 430
#2 10 20 50 20 530 33
或遍历 map
中的数据名称并应用 unnest_wider
library(tidyr)
map_dfc(names(my_tibble),
~ my_tibble %>%
select(.x) %>%
unnest_wider(.x)) %>%
set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))
根据 ?unnest_wider
的文档
.col, col -
List-column to extract components from.
所以,它只是一个单独的列,我们可以在 ?unnest
中指定它是 cols
cols - Columns to unnest.
可能类似于上面使用 map 的答案,但更容易命名。
map_dfc(colnames(my_tibble),
~ unnest_wider(my_tibble[.x], .x, names_sep = "."))
这是我的小标题:
my_tibble<-tibble(Level = list(c(10,20),c(10,20)),Level2 = list(c(30,40),c(50,20)),Level3 = list(c(330,430),c(530,33)))
我想使用 unnest_wider 取消嵌套所有列:Level
、Level2
、Level3
.
我正在这样做:unnest_wider(my_tibble,Level,Level2,Level3)
当然没有用。
我该怎么做?
我们可以使用 unlist2d
和 map
library(purrr)
library(collapse)
map_dfc(my_tibble, ~ unlist2d(.x) %>%
select(-1)) %>%
set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))
-输出
# Level_1 Level_2 Level2_1 Level2_2 Level3_1 Level3_2
#1 10 20 30 40 330 430
#2 10 20 50 20 530 33
或遍历 map
中的数据名称并应用 unnest_wider
library(tidyr)
map_dfc(names(my_tibble),
~ my_tibble %>%
select(.x) %>%
unnest_wider(.x)) %>%
set_names(paste0(rep(names(my_tibble), each = 2), "_", 1:2))
根据 ?unnest_wider
.col, col - List-column to extract components from.
所以,它只是一个单独的列,我们可以在 ?unnest
中指定它是 cols
cols - Columns to unnest.
可能类似于上面使用 map 的答案,但更容易命名。
map_dfc(colnames(my_tibble),
~ unnest_wider(my_tibble[.x], .x, names_sep = "."))