【问题标题】:Convert vector element in tibble to expand将 tibble 中的向量元素转换为展开
【发布时间】:2019-11-27 10:02:02
【问题描述】:

我有以下数据集。

tbl tibble 在coef 列中有向量元素。

coefs = c(1, 2, 3, 4)
coefs2 = c(2, 3, 4, 5)
names(coefs) = c("a", "b", "c", "d")
names(coefs2) = c("a", "b", "c", "d")
tbl = tibble(coef = list(coefs, coefs2), val=c("n1", "n2"))
tbl

# A tibble: 2 x 2
  coef      val  
  <list>    <chr>
1 <dbl [4]> n1   
2 <dbl [4]> n2   

我想通过使用管道运算符(如 map、mutate 和 foreach)将 tbl tibble 转换为以下 expected_tbl tibble

你能告诉我如何转换吗?

expected_tbl = tibble(a = c(1, 2), 
                      b = c(2, 3), 
                      c = c(3, 4), 
                      d = c(4, 5), 
                      val =c("n1", "n2"))

expected_tbl

# A tibble: 2 x 5
      a     b     c     d val  
  <dbl> <dbl> <dbl> <dbl> <chr>
1     1     2     3     4 n1   
2     2     3     4     5 n2 

【问题讨论】:

标签: r dataframe dplyr tidyverse


【解决方案1】:

有了新的tidyr,你可以使用unnest_wider

tidyr::unnest_wider(tbl, coef) 

# A tibble: 2 x 5
#      a     b     c     d val  
#  <dbl> <dbl> <dbl> <dbl> <chr>
#1     1     2     3     4 n1   
#2     2     3     4     5 n2   

【讨论】:

    【解决方案2】:

    您可以使用dplyr 包中的bind_rows

    bind_rows(coefs, coefs2) %>%
      mutate(val = c("n1", "n2"))
    
    # A tibble: 2 x 5
          a     b     c     d val  
      <dbl> <dbl> <dbl> <dbl> <chr>
    1     1     2     3     4 n1   
    2     2     3     4     5 n2 
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2017-02-23
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多