0

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

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')
    )
)

role和列中的每一行都fav_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但仍然没有走得很远。有人给我一些建议吗?非常感激。

4

1 回答 1

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来查找列表值的所有组合,

于 2017-04-10T18:45:32.703 回答