Я хочу извлечь набор конкретных слов из вектора текста, как показано в таблице ниже.Этот набор слов xyz, xyz10, xyz + и xyz 10 является названием продукта в текстовом столбце и, если доступно, извлекает его и присваивает его соответствующему столбцу с именем продукта
text product_name
hi i want to purchase xyz xyz
is xyz10 not available xyz10
i have xyz+ xyz+
what abour xyz 10 xyz 10
Ниже приведена таблица для справки
data <- data.frame(text=c("hi i want to purchase xyz","is xyz10 not
available","i have xyz+","what abour xyz 10"),
product <- c("xyz 10","xyz","xyz+","xyz10")
РЕДАКТИРОВАТЬ: Создается имя кадра продукта product_list, содержащее все имя продукта, а затем сопоставляется и извлекается со столбцом Comment в основном фрейме данных с использованием str_extract.Но некоторые названия продуктов с пробелом, например xyz 10, не совпадают полностью.
library(stringr)
df_empty <- data.frame(Comment=c("hi i want to purchase xyz","is xyz10 not
available","i have xyz+","what abour xyz 10"),stringsAsFactors=FALSE)
product_list <- data.frame(product_list=c("xyz 10","xyz","xyz+","xyz10"),stringsAsFactors=FALSE)
df_empty$Product=""
for (i in 1:nrow(df_empty)){
print(i)
for (j in 1:nrow(product_list)){
df_empty$Comment[i]<-gsub("-"," ",df_empty$Comment[i])
product_match<-str_extract(df_empty$Comment[i],fixed(product_list$product_list[j],ignore_case = T))
if (!(is.na(product_match))){
df_empty$Product[i]<-product_match
df_empty$Product[i]<-toupper(df_empty$Product[i])
}
}
}