Соответствие последовательности символов в цикле в R - PullRequest
0 голосов
/ 17 мая 2018

Я довольно новичок в R. Извиняюсь, что заранее задал основной вопрос.

У меня есть датафрейм, который выглядит так:

head(df)
  cr_id                      description       region       type   status
1     1 Grant system adminstrator rights         EMEA      audit approved
2     2     grant access to all products           UK     system  pending
3     3                 change in design Asia Pacific      audit approved
4     4                 change in design           UK regulatory  pending
5     5      More robust system required Asia Pacific     system  pending
6     6  Volume productivity for NA 2016           UK      audit approved

Теперь предположим, что у меня есть новое описание, введенное пользователем, захваченное в переменной new_cr. Я могу использовать следующее для получения сходства между любыми двумя описаниями:

library(fuzzywuzzyR)
init = SequenceMatcher$new(string1 = df$description, string2 = new_cr)
init$ratio

Но может ли кто-нибудь помочь мне поместить это в цикл или любой другой эффективный метод, чтобы получить все подобные описания (во всем кадре данных) выше определенного порога (0,8) в списке для дальнейшей обработки?

1 Ответ

0 голосов
/ 17 мая 2018

Используя цикл for, вы можете сделать следующее

ratios <- numeric(nrow(df))
for (ind in 1 : nrow(df)){
  init <- SequenceMatcher$new(string1 = df$description[ind], string2 = new_cr)
  ratios[ind] <- init$ratio()
}

Другой подход к получению ratios

ratios <- sapply(df$description, function(x) 
                SequenceMatcher$new(string1 = x, string2 = new_cr)$ratio())

Теперь сохраните только нужные строки

new_df <- df[which(ratios > 0.8), ]

Если вам просто нужны похожие описания, вы можете сделать следующее.

df$description[ratios > 0.8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...