[英]Unpack embedded vectors in columns of a data frame and spread the values to multiple rows in R
I have a data frame created by this chunk of code: 我有一个由这段代码创建的数据框:
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')
)
)
Each row in role
and fav_color
columns contain a vector or characters instead of a single string. role
和fav_color
列中的每一行都包含一个向量或字符,而不是单个字符串。 I want to spread the values into separate rows like this: 我想像这样将值分布到单独的行中:
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
I tried purrr
and tidyjson
but still didn't get very far. 我尝试了purrr
和tidyjson
但仍然没有走得很远。 Anyone gives me some advice? 有人给我一些建议吗? much appreciated. 非常感激。
You can do this with dplyr
fairly easily 您可以使用dplyr
轻松完成此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
Here we use the base function expand.grid
to find all combinations of the list values, 在这里,我们使用基本函数expand.grid
查找列表值的所有组合,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.