计算复杂字符串的出现次数

Counting the occurrences of complex strings

我有一个数据框,其中包含测量员输入的国家和年份信息。我遇到的问题是可以选择输入多个国家/地区,人们已经以不同的格式(例如,用 space、逗号或“和”分隔)输入多个国家/地区。我有一个预定义的国家列表。 我想要的是通过识别预定义国家列表中的字符串来计算每个国家每年出现的次数。这就是我的数据框的样子。

Countries_predefined <- as.data.frame(c("Brazil", "Chile", "United States", "United Kingdom"))
colnames(Countries_predefined) <- "Country"

Surveyor_form <- as.data.frame(c("Brazil", "Brazil and United States", "United States United Kingdom", "Brazil, United Kingdom, United States"))
colnames(Surveyor_form) <- "Country"
Surveyor_form$Year <- c("1999", "1999", "2000", "2000")

我希望最终输出如下所示:

Country           1999    2000
Brazil              2       1
Chile               0       0
United States       1       2
United Kingdom      0       2

我在这个问题中读到如何通过某个字符串过滤数据框,我已经成功使用下面的regex.escape函数来识别是否识别了某些单词,但是可以'想想我如何应用它来计算每年的国家数量。

regex.escape <- function(string) {
  gsub("([][{}()+*^$|\\?.])", "\\\1", string)
}

你可以试试

t(table(stack(Map(function(x) Surveyor_form$Year[grep(x,Surveyor_form$Country)],
  Countries_predefined$Country))))
#                values
#ind              1999 2000
#  Brazil            2    1
#  Chile             0    0
#  United States     1    2
#  United Kingdom    0    2