Если это строка, один из вариантов - снять квадратные скобки с str_remove_all
, а затем использовать separate_rows
, чтобы разделить «Ингредиент» на ,
, чтобы расширить строки
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
* 1006. *
Или другой вариант - извлечь слова в list
, а затем выполнить unnest
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
Или в base R
с помощью regmatches/gregexpr
, чтобы извлечь слова в list
, а затем создайте 'data.frame'
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
data
df1 <- data.frame(Ingredient = "['eggs', 'flour', 'sugar']",
AverageReview = 4.7, stringsAsFactors = FALSE)