【发布时间】:2020-12-23 02:24:12
【问题描述】:
我收到的数据格式不是很好(我无法在上游更改它们)。有一列需要重新排序,并根据某些关键字分成 10 多列。
这是我收到的数据示例 - 对于每个人,他们选择了一种 3 种不同的食物。他们对每种食物类别的选择(food1、food2、food3)紧跟在正文之后:
list1 <- c(' food1 pasta food2 apple food3 carrot ')
list2 <- c(' food2 banana food3 cucumber food1 brown rice ')
list3 <- c(' food3 bell pepper food2 plum food1 bread ')
foodListDF <- as.data.frame(matrix(c(1,2,3, list1, list2, list3), nrow = 3), stringsAsFactors = FALSE)
colnames(foodListDF) <- c('Person', 'Choices')
foodListDF
Person Choices
1 1 food1 pasta food2 apple food3 carrot
2 2 food2 banana food3 cucumber food1 brown rice
3 3 food3 bell pepper food2 plum food1 bread
以上是我接收数据的格式。我的最终目标是将Choices 列拆分为 3 个单独的列,分别标记为 food1、food2 和 food3,这需要正确订购:
Person food1 food2 food3
1 1 pasta apple carrot
2 2 brown rice banana cucumber
3 3 bread plum bell pepper
我知道我可以通过以下方式拆分选择:
library(stringr)
as.data.frame(str_split_fixed(foodListDF$Choices, c(' food1 | food2 | food3 '), 4))[,2:4]
V2 V3 V4
1 pasta apple carrot
2 banana cucumber brown rice
3 bell pepper plum bread
但这显然不会将它们分成适当的组/顺序,这是非常必要的。
我真的只是在努力思考如何为每个人从适当的群体中提取正确的食物。有什么想法吗?
【问题讨论】:
标签: r