dplyr:将单元格中的列表(length-n)转置为n行

时间:2018-02-16 01:23:46

标签: r dplyr

我有这种风格的数据:

df=tibble(a=letters[23:25],b='k',c='m',d=list(runif(4)))
df
# A tibble: 3 x 4
      a     b     c         d
  <chr> <chr> <chr>    <list>
1     w     k     m <dbl [4]>
2     x     k     m <dbl [4]>
3     y     k     m <dbl [4]>

我希望列表d中的每个值都是名为m的列中的条目,这是c的内容。具体做法是:

# A tibble: 3 x 12
      a     b     m     
  <chr> <chr> <dbl>     
1     w     k     0.57 
2     x     k     0.45 
3     y     k     0.34 

如果可能,我只想使用dplyr,或者至少使用tidyverse

中的某些内容

1 个答案:

答案 0 :(得分:2)

您可以使用tidyr::unnest

require(tidyverse);
unnest(df) %>%
    select(-c)
## A tibble: 12 x 3
#   a     b         d
#   <chr> <chr> <dbl>
# 1 w     k     0.924
# 2 w     k     0.537
# 3 w     k     0.469
# 4 w     k     0.289
# 5 x     k     0.924
# 6 x     k     0.537
# 7 x     k     0.469
# 8 x     k     0.289
# 9 y     k     0.924
#10 y     k     0.537
#11 y     k     0.469
#12 y     k     0.289

样本数据

set.seed(2017);
df=tibble(a=letters[23:25],b='k',c='m',d=list(runif(4)))