首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`unnest_wider`多列

`unnest_wider`多列
EN

Stack Overflow用户
提问于 2020-03-24 03:33:38
回答 2查看 812关注 0票数 0

我有一个包含多个列的tibble,其中包含多个list列,我想对其执行unnest_wider操作。

代码语言:javascript
复制
df1 <- tibble(
  gr = c('a', 'b', 'c'),
  values1 = list(1:2, 3:4, 5:6),
  values2 = list(1:2, 3:4, 5:6)
)

我尝试了许多不起作用的方法,包括在col中添加一个向量

代码语言:javascript
复制
df1 %>% # unnest_wider doesn't take multiple inputs
  unnest_wider(col = c(values, values2),
               names_sep = c("_1", "_2"), 
               names_repair = "unique")

并尝试使用mutate_at

代码语言:javascript
复制
df1 %>% # mutate_at doesn't send data
  mutate_at(vars(values, values2), 
            ~unnest_wider(col = .,
               names_sep = c("_1", "_2"), 
               names_repair = "unique"))

如何更宽地取消多个列的嵌套?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-24 11:18:37

我用过的答案

代码语言:javascript
复制
df1 %>% 
  unnest() %>% 
  mutate(q_name = rep(c("1", "2"), nrow(.)/2)) %>% 
  pivot_wider(id_cols = gr, 
              names_from = q_name, 
              values_from = values1:values2)
票数 0
EN

Stack Overflow用户

发布于 2020-03-24 04:06:57

以下是map的一种选择

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60820415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档