【问题标题】:Count multiple patterns using the str_count function in R使用 R 中的 str_count 函数计算多个模式
【发布时间】:2014-09-30 16:16:34
【问题描述】:

对 R 来说还是个新手,在使用 string_count 函数检测多个未知且包含在单独向量中的单词时遇到了一些困难。

现在,我知道如何使用以下代码检测模式的单个实例:

str_count(mydf$string, "Apples")

我想要做的是从一个向量中检测多个单词(例如“Apples”、“Pears”、“Oranges”等),该向量本身是从另一个数据帧创建的(例如,通过使用Uniques<-unique(mydf1$words))。

这里的关键是mydf1$words 中出现的单词完全取决于首先上传到 R 的数据,因为这会从数据集更改为数据集。

答案可能很简单,但对于我的生活,我似乎无法解决!

【问题讨论】:

  • table(mydf$string)

标签: r string count


【解决方案1】:

你的意思是stringr包中的str_count函数吗?

如果是这样,它使用正则表达式,并且在正则表达式的模式中,| 字符表示“或”,因此str_count(mydf$string, 'apple|pear') 将计算“apple”或“pear”的出现次数以给出总计数。带有|字符的字符串可以用paste构造,试试:

str_count(mydf$string, paste(Uniques, collapse='|'))

您可以通过运行这部分代码来查看由paste 构造的字符串。请注意,如果您构建一个包含很多选项的模式,那么它可能会运行得很慢。另一种选择是将第一个字符串拆分为单个单词,并使用 %in% 运算符将单词向量与选项向量进行比较(然后计算 TRUE)。

【讨论】:

  • 就是这样!这正是我所追求的 - 非常感谢您的回答。我仍然在掌握 R 并且不知道 |性格:太简单了!
【解决方案2】:

如果您正在计算由 unique() 创建的字符向量中的出现次数,则所有内容的计数都应为 1 ;) 尝试在向量上使用 table() 函数。

table(c("Apples","Pears","Oranges","Apples","Apples","Pears"))[["Apples"]]

【讨论】:

    【解决方案3】:

    不确定预期的结果。也许:

     library(stringr)
     sapply(unique(vec1), function(x) str_count(vec1,x))
     #       Apples Pears Oranges
     #[1,]      1     0       0
     #[2,]      0     1       0
     #[3,]      0     0       1
     #[4,]      1     0       0
     #[5,]      1     0       0
     #[6,]      0     1       0
    

    数据

      vec1 <- c("Apples","Pears","Oranges","Apples","Apples","Pears")
    

    【讨论】:

      【解决方案4】:

      如果我了解您的需求,那么应该这样做。您首先需要使用paste 命令和参数collapse 将所有单词的单个字符串创建为单个字符串。

      library(stringr)
      fruit <- c("apple", "banana", "pear", "pineapple")
      fruit_together <- paste(fruit, collapse=" ")
      fruit_together
      

      现在您可以使用新合并的字符串来查看发生了多少实例。

      str_count(fruit_together, "apple")
      

      【讨论】:

        【解决方案5】:

        试试%in%

        x <- c("Apples","Pears","Oranges","Apples","Apples","Pears")
        sum(x %in% "Apples")
        # [1] 3
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-11
          • 2015-02-09
          • 1970-01-01
          • 2015-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多