Как я могу найти слова, используя его часть в каждом столбце DataFrame в R - PullRequest
0 голосов
/ 14 декабря 2018

Я делаю функцию «поиска заголовка» в R и испытываю трудности.

Мой план такой.

  1. получение названия заголовка от пользователя.

    search_keyword = readline(prompt = "Books Title")

  2. Основываясь на ключевом слове search, функция просматривает базу данных.

  3. и возвращает заголовок "Полное имя" иего «ранг» от каждого столбца базы данных.

Форма базы данных выглядит следующим образом.

rank | ________ янв ___________ | _____________ февраль |....

1 |Вы можете сделать кодирование: это легко. |Статья = (пересмотренный вариант.)

2 |Статья = (пересмотренный вариант.) ....... |(Новое) История программистов

3 |................................................. |Вы можете сделать кодирование: это просто

ниже - мой требуемый результат.

  • search_keyword = "Article"
  • затем, он возвращает ...

    Вводное ключевое слово: "Статья"

    Поиск: "Статья = (исправленная версия.)"

    Изменение рейтинга [Статья = (исправленная версия.)]

    Янв: 2

    Фев: 1 .. .. ..

    (если у него нет рейтинга в сентябре,

    сеп: вне графика)

В моем случае слова стран не имеют различий в капитале. (Нет понятия капитала)

Пример данных подобен изображению ниже.

введите описание изображения здесь

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете реализовать это, используя пакеты dplyr и tidyr.Смотрите код ниже:

# Sample input
df<-data.frame(rank=1:3,
               Jan=factor(c('You can do Coding : it is easy','Article = (revised version.)','The Story of programmers')),
               Feb=factor(c('You can do Coding : it is easy','The Story of programmers','Article = (revised version.)'))
               )
  rank                            Jan                            Feb
#1    1 You can do Coding : it is easy You can do Coding : it is easy
#2    2   Article = (revised version.)       The Story of programmers
#3    3       The Story of programmers   Article = (revised version.)
library(dplyr)
library(tidyr)

search_term<-'You'
df %>%
  gather('month','title',Jan:Feb) %>%
# rank month                          title
# 1    1   Jan You can do Coding : it is easy
# 2    2   Jan   Article = (revised version.)
# 3    3   Jan       The Story of programmers
# 4    1   Feb You can do Coding : it is easy
# 5    2   Feb       The Story of programmers
# 6    3   Feb   Article = (revised version.)
  filter(grepl(search_term,title))
# rank month                        title
# 1    2   Jan Article = (revised version.)
# 2    3   Feb Article = (revised version.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...