【问题标题】:Unpack embedded vectors in columns of a data frame and spread the values to multiple rows in R解压缩数据框列中的嵌入向量并将值传播到 R 中的多行
【发布时间】:2017-04-10 18:31:07
【问题描述】:

我有一个由这段代码创建的数据框:

df <- dplyr::data_frame(
    id = c(1, 2, 3),
    name = c('Jack', 'Peter', 'Sam'),
    role = list(
        c('Manager', 'Analyst'),
        c('Analyst', 'Advisor'),
        c('Analyst')
    ),
    fav_color = list(
        c('White', 'Blue'),
        c('Black', 'Red'),
        c('White', 'Red')
    )
)

rolefav_color 列中的每一行都包含一个向量或字符,而不是单个字符串。我想像这样将值分散到单独的行中:

id   name   role     fav_color
------------------------------
1    Jack   Manager  White
1    Jack   Manager  Blue
1    Jack   Analyst  White
1    Jack   Analyst  Blue
2    Peter  Analyst  Black
2    Peter  Analyst  Red
2    Peter  Advisor  Black
2    Peter  Advisor  Red
3    Sam    Analyst  White
3    Sam    Analyst  Red

我尝试了purrrtidyjson,但仍然没有走多远。 有人给我一些建议吗?非常感谢。

【问题讨论】:

    标签: r dataframe nested-datalist


    【解决方案1】:

    你可以很容易地用dplyr做到这一点

    df %>% rowwise %>% do(expand.grid(., stringsAsFactors=FALSE))
    #       id  name    role fav_color
    # *  <dbl> <chr>   <chr>     <chr>
    # 1      1  Jack Manager     White
    # 2      1  Jack Analyst     White
    # 3      1  Jack Manager      Blue
    # 4      1  Jack Analyst      Blue
    # 5      2 Peter Analyst     Black
    # 6      2 Peter Advisor     Black
    # 7      2 Peter Analyst       Red
    # 8      2 Peter Advisor       Red
    # 9      3   Sam Analyst     White
    # 10     3   Sam Analyst       Red
    

    这里我们使用基函数expand.grid 来查找列表值的所有组合,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 2021-06-24
      相关资源
      最近更新 更多