【发布时间】:2018-06-15 23:02:09
【问题描述】:
我有一个来自二手来源的数据框,其中一列中有很多关键信息,用空格分隔。我不能简单地使用str_split,因为某些关键信息的名称中有空格,但它们前面有一个分组变量。以下是使用食物和食物组的示例:
foo1 <- paste('FRUIT', 'Apple', 'PROTEIN', 'Chicken', 'STARCH', 'Banana Bread', 'FRUIT', 'Strawberry')
foo2 <- paste('PROTEIN', 'Pork', 'FAT', 'Butter', 'FRUIT', 'Banana', 'STARCH', 'Spaghetti')
foo3 <- paste('FRUIT', 'Strawberry', 'PROTEIN', 'Lean Steak', 'FRUIT', 'Strawberry', 'STARCH', 'Potato')
df <- rbind(foo1, foo2, foo3)
df
foo1 "FRUIT Apple PROTEIN Chicken STARCH Banana Bread FRUIT Strawberry"
foo2 "PROTEIN Pork FAT Butter FRUIT Banana STARCH Spaghetti"
foo3 "FRUIT Strawberry PROTEIN Lean Steak FRUIT Strawberry Starch Potato"
在这种情况下,我想要获取的关键部分是实际的食物,但我不能分割空间,因为存在诸如“香蕉面包”之类的东西。因此,我只能拆分 FRUIT、PROTEIN、STARCH 或 FAT,但我想不出一个好的方法来做到这一点。在我的实际表中,仍然只有 4 个“分组”,但有 500 多个单独的项目,因此尝试用空格映射特定的项目将是一个巨大的痛苦。以下行不起作用:
str_split(df, c('FRUIT', 'PROTEIN', 'STARCH', 'FAT'))
str_split_fixed(df, c('FRUIT', 'PROTEIN', 'STARCH', 'FAT'), 4)
有什么想法吗?提前致谢。
【问题讨论】: