【问题标题】:Count number of times a word appears (dplyr)计算单词出现的次数 (dplyr)
【发布时间】:2018-08-29 15:28:59
【问题描述】:

这里是一个简单的问题,可能与this 重复?

我试图弄清楚如何计算一个单词在向量中出现的次数。我知道我可以计算一个单词出现的行数,如下所示:

temp <- tibble(idvar = 1:3, 
               response = (c("This sounds great",
                      "This is a great idea that sounds great",
                      "What a great idea")))
temp %>% count(grepl("great", response)) # lots of ways to do this line
# answer = 3

上面代码中的答案是 3,因为“great”出现在三行中。然而,“伟大”一词在向量“响应”中出现了 4 次不同的时间。我该如何找到它?

【问题讨论】:

  • 您是否打算提供一个特定的单词并获得您想要的数字?或者您想为所有句子中出现的每个单词获取该数字?
  • 只是打算提供一个特定的词并获取数字。我可以使用tidytext unnest 将句子拆分为标记,然后计算单词。 (但如果您有其他方法的建议,我会全力以赴!)
  • 我也想到了tidytext :)

标签: r regex count dplyr


【解决方案1】:

我们可以使用stringr 中的str_count 来获取每行中“出色”的实例数,然后获取该计数的sum

library(tidyverse)
temp %>% 
   mutate(n = str_count(response, 'great')) %>%
   summarise(n = sum(n))
# A tibble: 1 x 1
#      n
#   <int>
#1     4

或者使用来自base Rregmatches/gregexpr

sum(lengths(regmatches(temp$response, gregexpr('great', temp$response))))
#[1] 4

【讨论】:

  • 感谢您添加base R - 在我的某些用例中实际上可能更简单。
【解决方案2】:

在我的脑海中,这应该可以解决您的问题:

library(tidyverse)
temp$response %>% 
  str_extract_all('great') %>%
  unlist %>%
  length

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多