如何按年份分组统计指定字符串在字符串列表中的出现次数
实现方案
首先确保已加载data.table包:
library(data.table)
按以下步骤操作即可得到目标结果:
- 先展开
name表的name0列表列,将每个年份对应的多个关键词拆分为单独行 - 聚合
text表,把同一年份下所有text0的字符串汇总为单个向量 - 两张表按年份关联后分组统计匹配次数
完整代码如下:
# 展开name表的列表列 name_long <- name[, .(name0 = unlist(name0)), by = year] # 按年份聚合所有text字符串 text_agg <- text[, .(text_item = unlist(text0)), by = year] # 关联后统计匹配次数 result <- name_long[text_agg, on = .(year), allow.cartesian = TRUE ][, .(count = sum(grepl(name0, text_item, fixed = TRUE))), by = .(year, name0)]
代码中fixed = TRUE参数用于避免name0包含正则特殊字符时出现匹配错误,你的场景不加也可得到正确结果,加上更稳妥。运行上述代码得到的结果与你给出的示例result完全一致。
内容的提问来源于stack exchange,提问作者Vesper
相关产品推荐
相关产品推荐

