Как рассчитать на основе некоторых общих слов в R - PullRequest
1 голос
/ 28 марта 2019

У меня есть фрейм данных со столбцом, имеющим почти одинаковые строки, за исключением нескольких слов.Поэтому я хочу получить некоторые общие слова или шаблон в этом столбце текста.Я предоставил пример ввода, так как мои данные огромны.

u=data.frame(text=c("you can find details on sunday",
                    "you may find details on sunday",
                    "you will find details on saturday",
                    "where can I get my personal details on portal",
                    "where to see personal details"),stringsAsFactors = FALSE)

Для всех них я получаю счет как 1. Но я хочу объединить счет, если у них общие слова по порядку, чтобы получить суммуcount.

Ожидаемый результат в кадре данных с 2 столбцами - text и count: "you can find details" - количество должно быть 3 "my personal details" - число должно быть 2

Ответы [ 2 ]

1 голос
/ 28 марта 2019

A base R решением было бы использовать gregexpr/regmatches для извлечения слов на основе вектора слов ('str1') и затем присвоения list вектора в столбцы

u[c("find", "personal")] <- lapply(str1, function(x) 
             lengths(regmatches(u$text, gregexpr(x, u$text))))
u
#                                           text find personal
#1                you can find details on sunday    1        0
#2                you may find details on sunday    1        0
#3             you will find details on saturday    1        0
#4 where can I get my personal details on portal    0        1
#5                 where to see personal details    0        1

данные

str1 <- c("find details","personal details")
0 голосов
/ 28 марта 2019

A tidyverse решение вашей проблемы с использованием str_count из пакета stringr :

library(tidyverse)

str <- c("find details","personal details")

u %>% 
  mutate( find =  stringr::str_count(text, str[1]),
          personal =  stringr::str_count(text, str[2]),
          )

Вывод:

                                              text find personal
1                you can find details on sunday    1        0
2                you may find details on sunday    1        0
3             you will find details on saturday    1        0
4 where can I get my personal details on portal    0        1
5                 where to see personal details    0        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...