如何计算一个单词连续出现的次数

时间:2019-08-13 04:02:56

标签: r string count frequency

我有一排这样的字符串:

[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                                         

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

我尝试使用功能

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

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

输出应如下所示:

Hospitals : 8
Health campus: 1

Total Hospitals = 9

2 个答案:

答案 0 :(得分:2)

一种解决方案是计算每个字符串中“医院”的出现次数,然后求和。

尝试一下:

library(tidyverse)

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

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

答案 1 :(得分:0)

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

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

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


除了grepl以外,您还可以类似的方式使用stringr::str_detect

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