我有一排这样的字符串:
[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
答案 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"))