Несколько частичных совпадений строк в количестве данных - PullRequest
0 голосов
/ 13 мая 2018

Я искал решение по другим темам, но не нашел его. Я хочу посчитать несколько частичных совпадений строк. Строки находятся в кадре данных, но я также пробовал в (символьном) векторе.

Пример ввода:

authors <- c("Edward","Kelly","Simon")
df <- 
Text                                 Date      
Edward was the king of ...           2011          
Kelly has ..                         2014           
Last year Simon..                    2009           
Did you know Edward..                1999     

Что я хочу получить в качестве вывода:

Author                               Count 
Edward                                2
Kelly                                 1           
Simon                                 1

Важно также то, что каждая строка в тексте столбца сопоставляется только один раз. Поэтому, если имя упоминается дважды в ячейке ввода, оно все равно должно совпадать только один раз.

Я пробовал что-то вроде:

sum(str_count(df$Text,c("Edward")))

, который работает для одного входного имени, но не для нескольких. Я надеюсь, что кто-то может помочь мне с этим

1 Ответ

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

Мы можем перебрать 'авторов', получить str_count, sum и enframe, чтобы получить один набор данных

library(tidyverse)
map_df(authors, ~ str_count(df$Text, .x) %>% 
                       sum %>%
                       set_names(.x) %>% 
                       enframe(name = "Author", value = "count")) %>%
    arrange(desc(count))
# A tibble: 3 x 2
#  Author    count
#   <chr>  <int>
#1 Edward     2
#2 Kelly      1
#3 Simon      1
...