【问题标题】:Countif or counta google Spreadsheets to count word appearancesCountif 或 counta google 电子表格来计算单词的出现次数
【发布时间】:2016-06-16 12:25:59
【问题描述】:

我想计算特定字词在我的谷歌电子表格中(每行)出现的次数。
我的电子表格看起来像这样(而 ? 是我想要计算结果的区域):
表 1
|cmets|提货|提价|提服务|
|发货快,支持很好|?|?|?|
|质量价格太高。包装损坏|?|?|?|
|电子邮件支持快速而有用|0?|?|?|

表 2(表 1 cmets 应与之比较的所有词):
|mentions delivery|mentions price|mentions service|
|发货|价格|支持|
|运费|价格昂贵|服务|
|盒子|-|通话|

在计算表 2 中我的单词有多少出现在表 1 的 cmets 之后,表 1 应该如下所示:
|cmets|mentions delivery|mentions price|mentions service|
|交货快,很好的支持|1|0|1|
|质量价格太高。包装损坏|1|1|0|
|电子邮件支持快速而有用|0|0|1|

我尝试使用无法开始工作的 countif 函数,现在正在使用 counta,它的工作方式与预期一样(不使用表 2),但我希望在表 2 中添加更多单词时自动调整公式:

=COUNTA(Filter(Split(D2," "),"delivery")) + COUNTA(Filter(Split(D2," "),"shipping"))
有什么解决方案的想法吗?

【问题讨论】:

    标签: google-sheets countif text-classification


    【解决方案1】:

    假设 F2 包含一条评论,而 A 列列出了与交付相关的词。以下公式计算出现在评论中的 A 列中的单词数。它需要单词边界,这样“caprice”才不会被误认为“price”,而是允许一些复数形式,这样“price”在“prices”中被识别,“box”在“boxes”中被识别。

    =sum(arrayformula(n(regexmatch(F2, "\b" & filter(A2:A, len(A2:A)) & "e?s?\b"))))
    

    说明

    1. filter(A2:A, len(A2:A)) 准备单词列表,省略空格。
    2. "\b" 强制单词边界,而 "e?s?"允许复数形式。
    3. regexmatch 返回 True 或 False,取决于 F2 中的注释是否匹配。
    4. n 将 True 转换为 1,将 False 转换为 0。
    5. sum(arrayformula(...)) 说:对每个单词做上述操作,并添加结果。

    【讨论】:

    • 完美运行,非常感谢!并感谢您提供的详细信息,这将有助于我下次@soup
    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多