Распакуйте встроенные векторы в столбцы фрейма данных и распределите значения по нескольким строкам в 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
найти все комбинации значений списка,