【问题标题】:How to count the occurences of a word in a row如何计算一个单词连续出现的次数
【发布时间】:2024-01-24 05:26:01
【问题描述】:

我有一排这样的字符串:

[1] X                                             Royal.Perth.Hospital                         
[3] X.1                                           X.2                                          
[5] X.3                                           X.4                                          
[7] X.5                                           X.6                                          
[9] Fremantle.Hospital                            X.7                                          
[11] X.8                                          X.9                                          
[13] X.10                                         X.11                                         
[15] X.12                                          
Princess.Margaret.Hospital.For.Children      
[17] X.13                                         X.14                                         
[19] X.15                                          X.16                                         
[21] X.17                                          X.18                                         
[23] King.Edward.Memorial.Hospital.For.Women       X.19                                         
[25] X.20                                          X.21                                         
[27] X.22                                          X.23                                         
[29] X.24                                          Sir.Charles.Gairdner.Hospital                
[31] X.25                                          X.26                                         
[33] X.27                                          X.28                                         
[35] X.29                                          X.30                                         
[37] Armadale.Kelmscott.District.Memorial.Hospital X.31                                         
[39] X.32                                          X.33                                         
[41] X.34                                          X.35                                         
[43] X.36                                          Swan.District.Hospital                       
[45] X.37                                          X.38                                         
[47] X.39                                          X.40                                         
[49] X.41                                          X.42                                         
[51] Rockingham.General.Hospital                   X.43                                         
[53] X.44                                          X.45                                         
[55] X.46                                          X.47                                         
[57] X.48                                          Joondalup.Health.Campus                      
[59] X.49                                          X.50                                         
[61] X.51                                          X.52                                         
[63] X.53                                          X.54                                         

我想计算“医院”一词在一行中出现的次数。 注意:最后一家医院名称中没有“医院”一词,而是名称中带有“健康校园”。

我尝试使用该功能

occurences<-table(unlist(myrow))
occurences["Hospitals"]

但无法计算该行的医院数量。

输出应该是这样的:

Hospitals : 8
Health campus: 1

Total Hospitals = 9

【问题讨论】:

  • 请提供一个可重现的小例子。也许您需要sum(names(occurences) == "Hospitals') 请注意,我们不知道您的数据结构以帮助您
  • 这是一行,里面有字符串。
  • 注意到您已经更新了描述,但如果您能提供一些示例会更好,因为我们不知道您的数据或上下文。最好是dput
  • 另外,根据信息,如果您使用table(unlists(myrow)),它应该同时给出“医院”和“健康校园”的计数。从那里,只需执行sum(occurences) 即可获得“总计”
  • 请看我的编辑。我已经把我的整行都包括在里面了。谢谢。

标签: r string count frequency


【解决方案1】:

一种解决方法是统计每个字符串中“Hospital”出现的次数,然后求和。

试试这个:

library(tidyverse)

strings <- c("X", "Royal.Perth.Hospital","X.1","X.2","Rockingham.General.Hospital")

strings %>% str_count("Hospital") %>% sum()

【讨论】:

    【解决方案2】:

    我们可以使用grepl 来查找"Hospital""Health.Campus" 的出现,然后将它们结合起来查找两者的出现。

    Hospitals <- sum(grepl("Hospital", occurences))
    Health.Campus <- sum(grepl("Health.Campus", occurences))
    Total <- Hospitals + Health.Campus
    

    如果单词以小写和大写形式出现,您可能希望在 grepl 中包含 ignore.case = TRUE


    您也可以使用stringr::str_detect 以类似方式代替grepl

    Hospitals <- sum(stringr::str_detect(occurences, "Hospital"))
    

    【讨论】:

      最近更新 更多