2017-04-10 36 views
0

我具有由该块的代码创建的数据帧:拆包嵌入在数据帧的列向量和蔓延的值,以多个行中的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') 
    ) 
) 

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,但仍没有得到很远。 任何人都给我一些建议?非常感激。

回答

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

相关问题