【问题标题】:Calculate frequency of words from column with CSVs in cells计算单元格中包含 CSV 的列中单词的频率
【发布时间】:2014-03-28 11:28:17
【问题描述】:

我的工作表中有一个列,其中包含通过 Google 表单复选框提交的表单值。由于表单中的多选,这会在工作表中生成逗号分隔值 (CSV) 列表。一个例子:

我想计算每个“标签”被使用的频率。产生类似的东西:

我找到了这个公式(感谢 @AdamL),它非常适合计算整个列中单个单词的频率:

=ArrayFormula(QUERY(TRANSPOSE(SPLIT(JOIN(" ";B3:B);" ")&{"";""});"select Col1, count(Col2) group by Col1 order by count(Col2) desc limit 10 label Col1 'Word', count(Col2) 'Frequency'";0))

但是,我找不到修改它以通过逗号(或逗号和空格)而不是空格(当然,空格在每个字段中生成单个单词)拆分为生成字段的方法。希望这是有道理的。

尝试将 Join 中的分隔符从“”替换为“,”和“,” - 不高兴:(

有什么想法吗?

【问题讨论】:

    标签: google-sheets formula


    【解决方案1】:

    修改它以通过逗号(或逗号和空格)而不是空格来拆分生成的字段

    您需要为此触摸JOINSPLIT 函数。而不是SPLIT(JOIN(" ";B3:B);" "),试试:

    SPLIT(JOIN(", ";B3:B);", ")
                ^^         ^^  
    

    这样,JOIN 将使用两个字符的分隔符 ", " 将单元格放在一起,这与您从表单中获得的分隔符相同。然后SPLIT 将获取每个", ",包括来自JOIN 和来自表单的那些,并分解各个术语。单词之间的空间会保留下来。

    你将拥有:

    =ArrayFormula(QUERY(TRANSPOSE(SPLIT(JOIN(", ",B2:B),", ",false)&{"";""}),"select Col1, count(Col2) group by Col1 order by count(Col2) desc limit 10 label Col1 'Word', count(Col2) 'Frequency'",0))
    

    【讨论】:

    • 让这个查询不区分大小写怎么样?你会怎么做?
    • @leontalbot - 您应该将其作为一个新问题提出,它指的是上下文和归属的这个答案。其他人更有可能通过这种方式找到它并从中受益。
    • ... JOIN(", ",LOWER(B2:B)) ... 请注意PROPER() 系统地将第一个字母大写,这样更好...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多