Категоризация символов с использованием словарей в R - PullRequest
1 голос
/ 08 июля 2019

Я хочу классифицировать товары в корзине, используя словари со всеми видами товаров в категории. В частности, я хочу проверить, является ли продукт из моей корзины элементом моего словаря, и если это так, я бы хотел заменить продукт названием категории (словарь).

Я импортировал свой словарь в список в csv и попытался сравнить товары моей корзины с% в%, но это не сработало.

BD19jfiles [[i]] $ product $ name возвращает товары из корзины. Pistolets - список с символами (словарь).

l <- length(BD19jfiles)
for(i in 1:l) {
if(BD19jfiles[[i]]$product$name %in% Pistolets){
grepl('Pistolet', BD19jfiles[[i]]$product$name)
}
}

Я хотел бы заменить продукты, которые возвращают true для 'BD19jfiles [[i]] $ product $ name% in% Pistolets', на слово "Pistolet"

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Мы можем использовать lapply, чтобы зациклить list и обновить элемент 'name', проверив подстроку 'PISTOLET' в этом элементе с помощью grepl и назначив их для "Pistolet"

lapply(BD19jfiles, function(x) {
   x$product$name[grepl("PISTOLET", x$product$name)] <- "Pistolet"
    x
    }) 

Если идентификатор словаря - Pistolets

lapply(BD19jfiles, function(x) {
     x$product$name[x$product$name %in% Pistolets] <- "Pistolet"
     x
     })

Если это подстрока, используйте grepl

nm1 <- paste0("\\b(", paste(unlist(Pistolets), collapse="|"), ")\\b")
out <- lapply(BD19jfiles, function(x) {

       x$product$name[grepl(nm1, x$product$name)] <- "Pistolet" 
       x
        })  
1 голос
/ 08 июля 2019
lapply(BD19jfiles, function(x){
   x$product$name=gsub(paste(Pistolets,collapse="|"),"Pistolets",x$product$name)
   x
}

Здесь вы меняете слова, которые соответствуют любому из слов в вашем словаре, на Pistolet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...