简体   繁体   English

`unnest_wider` 多列

[英]`unnest_wider` multiple columns

I have a tibble with multiple columns with multiple list columns I'd like to unnest_wider .我有一个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)
)

I have tried many approaches that have not worked including adding a vector into col我尝试了很多方法都没有奏效,包括在col添加一个向量

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

and trying mutate_at并尝试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"))

How can I unnest multiple columns wider?如何将多个列取消嵌套更宽?

Here is one option with map这是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

Answer I used我用过的答案

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM