R 将字符串列表拆分为单独的行
我有一个包含两列的食谱数据框架:一个按以下方式格式化的成分列表: 成分-----------------平均评价 鸡蛋、面粉、糖 我试图解包“配料”列,并为每个配料字符串指定一行,结果如下所示: 成分:-----平均评价: “鸡蛋”---4.7 “面粉”---4.7 “糖”---4.7R 将字符串列表拆分为单独的行,r,tidyr,R,Tidyr,我有一个包含两列的食谱数据框架:一个按以下方式格式化的成分列表: 成分-----------------平均评价 鸡蛋、面粉、糖 我试图解包“配料”列,并为每个配料字符串指定一行,结果如下所示: 成分:-----平均评价: “鸡蛋”---4.7 “面粉”---4.7 “糖”---4.7 这样做的目的是在完成这项工作后汇总数据,并对含有每种成分的配方进行平均审查。有什么建议吗?如果它是一个字符串,一个选项是用str\u remove\u all删除方括号,然后使用分隔行在处拆分“成分”,展开行 l
这样做的目的是在完成这项工作后汇总数据,并对含有每种成分的配方进行平均审查。有什么建议吗?如果它是一个字符串,一个选项是用
str\u remove\u all
删除方括号,然后使用分隔行
在处拆分“成分”,
展开行
library(stringr)
library(dplyr)
library(tidyr)
df1 %>%
mutate(Ingredient = str_remove_all(Ingredient, "\\[|\\]|'")) %>%
separate_rows(Ingredient, sep=",\\s*")
# Ingredient AverageReview
#1 eggs 4.7
#2 flour 4.7
#3 sugar 4.7
或者另一种选择是将单词提取到
列表中
,然后执行unest
df1 %>%
mutate(Ingredient = str_extract_all(Ingredient, "[[:alpha:]]+")) %>%
unnest(c(Ingredient))
# A tibble: 3 x 2
# Ingredient AverageReview
# <chr> <dbl>
#1 eggs 4.7
#2 flour 4.7
#3 sugar 4.7
数据
df1
lst1 <- regmatches(df1$Ingredient, gregexpr("[[:alpha:]]+", df1$Ingredient))
data.frame(Ingredient = unlist(lst1), AverageReview = rep(df1$AverageReview,, lengths(lst1)))
# Ingredient AverageReview
#1 eggs 4.7
#2 flour 4.7
#3 sugar 4.7
df1 <- data.frame(Ingredient = "['eggs', 'flour', 'sugar']",
AverageReview = 4.7, stringsAsFactors = FALSE)