`unnest_wider` несколько столбцов - PullRequest
0 голосов
/ 23 марта 2020

У меня есть tibble с несколькими столбцами с несколькими list столбцами, которые я бы хотел unnest_wider.

df1 <- tibble(
  gr = c('a', 'b', 'c'),
  values1 = list(1:2, 3:4, 5:6),
  values2 = list(1:2, 3:4, 5:6)
)

Я испробовал много подходов, которые не сработали, включая добавление вектора в col

df1 %>% # unnest_wider doesn't take multiple inputs
  unnest_wider(col = c(values, values2),
               names_sep = c("_1", "_2"), 
               names_repair = "unique")

и попытку mutate_at

df1 %>% # mutate_at doesn't send data
  mutate_at(vars(values, values2), 
            ~unnest_wider(col = .,
               names_sep = c("_1", "_2"), 
               names_repair = "unique"))

Как можно раскрутить несколько столбцов шире?

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Вот один вариант с map

library(dplyr)
library(purrr)
map_dfc(names(df1[-1]), ~ 
        df1 %>% 
             select(.x) %>%
             unnest_wider(c(!!.x), names_sep=c("_1", "_2"), 
                names_repair = 'unique')) %>%
  bind_cols(df1 %>% 
  select(gr), .)
# A tibble: 3 x 5
#  gr    values1_1 values1_2 values2_1 values2_2
#* <chr>     <int>     <int>     <int>     <int>
#1 a             1         2         1         2
#2 b             3         4         3         4
#3 c             5         6         5         6
0 голосов
/ 24 марта 2020

Ответ, который я использовал

df1 %>% 
  unnest() %>% 
  mutate(q_name = rep(c("1", "2"), nrow(.)/2)) %>% 
  pivot_wider(id_cols = gr, 
              names_from = q_name, 
              values_from = values1:values2)
...