Распакуйте встроенные векторы в столбцы фрейма данных и распределите значения по нескольким строкам в R

У меня есть фрейм данных, созданный этим фрагментом кода:

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

Я старался purrr а также tidyjson но все еще не очень далеко. Кто-нибудь дает мне несколько советов? очень признателен.

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 найти все комбинации значений списка,

Другие вопросы по тегам