使用R的str_count统计整个单词/数字出现次数

3

这个案例类似,我想使用stringr包的str_count函数计算出在一组句子中多个单词和数字的出现次数。

但我发现不仅整数会被计算,部分数字也会被计算。例如:

df <- c("honda civic 1988 with new lights","toyota auris 4x4 140000 km","nissan skyline 2.0 159000 km")
keywords <- c("honda","civic","toyota","auris","nissan","skyline","1988","1400","159")
library(stringr)
number_of_keywords_df <- str_count(df, paste(keywords, collapse='|'))

在这里我收到了一个长度为3、3、3的number_of_keywords_df向量,而显然应该是3、2、2。str_count函数似乎会在数字“140000”和“159000”中计数部分字符串“1400”和“159”。有没有什么方法可以防止这种情况发生?

2个回答

3
使用 sprintf,您可以添加单词边界:
number_of_keywords_df <- str_count(df, paste(sprintf("\\b%s\\b", keywords), collapse = '|'))
number_of_keywords_df

产生的结果为
[1] 3 2 2

1
尝试在关键词周围加上单词边界:
keywords <- c("honda","civic","toyota","auris","nissan","skyline","1988","1400","159")
keywords <- paste0("\\b", keywords, "\\b")

在正则表达式中,\bhonda\b 表示匹配独立的单词 honda。因此,hondas 不会匹配,因为它末尾有一个额外的字母。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接