如何在Google Sheets中计算数据集2-5长度组合的出现频率
在Google Sheets中统计同行多列不同长度数值组合的频率
以下是针对5列数据集,分别生成二元、三元、四元、五元组合频率表的简便实现方案,所有方案基于Google Sheets内置函数,无需脚本。
假设你的数据集范围为B2:F16(表头在B1:F1,共15行数据),若数据范围不同,只需修改公式中的data参数即可。
1. 二元组合频率表
统计所有同行内无序数对的出现次数(同一行内的数对仅算一次,不区分顺序)
公式
=LET( data, B2:F16, allPairs, FLATTEN(BYROW(data, LAMBDA(row, LET( arr, row, pair1, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,1,2))), pair2, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,1,3))), pair3, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,1,4))), pair4, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,1,5))), pair5, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,2,3))), pair6, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,2,4))), pair7, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,2,5))), pair8, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,3,4))), pair9, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,3,5))), pair10, TEXTJOIN("|", TRUE, SORT(CHOOSECOLS(arr,4,5))), {pair1; pair2; pair3; pair4; pair5; pair6; pair7; pair8; pair9; pair10} ) ))), uniquePairs, UNIQUE(allPairs), counts, BYROW(uniquePairs, LAMBDA(pair, COUNTIF(allPairs, pair))), splitPairs, BYROW(uniquePairs, LAMBDA(pair, SPLIT(pair, "|"))), HSTACK(splitPairs, counts) )
说明
- 用
BYROW遍历每行,生成该行所有10种二元组合 SORT确保数对无序(如10|17和17|10被视为同一组合)TEXTJOIN将组合转为字符串便于统一处理,最后拆分回多列并拼接频率统计结果- 手动在公式上方插入表头:
Num_1、Num_2、Frequency
2. 三元组合频率表
统计同行内所有三元组合的出现次数
公式
=LET( data, B2:F16, allCombs, FLATTEN(BYROW(data, LAMBDA(row, LET( arr, row, combs, { TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,3)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,4)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,3,4)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,3,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,4,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,2,3,4)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,2,3,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,2,4,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,3,4,5)) }, combs ) ))), uniqueCombs, UNIQUE(allCombs), counts, BYROW(uniqueCombs, LAMBDA(comb, COUNTIF(allCombs, comb))), splitCombs, BYROW(uniqueCombs, LAMBDA(comb, SPLIT(comb, "|"))), HSTACK(splitCombs, counts) )
说明
- 遍历每行生成所有10种三元组合,用
TEXTJOIN统一格式 - 提取唯一组合后统计出现次数,拆分回多列并拼接结果
- 手动添加表头:
Num_1、Num_2、Num_3、Frequency
3. 四元组合频率表
统计同行内所有四元组合的出现次数
公式
=LET( data, B2:F16, allCombs, FLATTEN(BYROW(data, LAMBDA(row, LET( arr, row, combs, { TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,3,4)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,3,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,2,4,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,1,3,4,5)), TEXTJOIN("|", TRUE, CHOOSECOLS(arr,2,3,4,5)) }, combs ) ))), uniqueCombs, UNIQUE(allCombs), counts, BYROW(uniqueCombs, LAMBDA(comb, COUNTIF(allCombs, comb))), splitCombs, BYROW(uniqueCombs, LAMBDA(comb, SPLIT(comb, "|"))), HSTACK(splitCombs, counts) )
说明
- 每行生成5种四元组合,处理逻辑与三元组合一致
- 手动添加表头:
Num_1、Num_2、Num_3、Num_4、Frequency
4. 五元组合频率表
统计完整行(五元组合)的出现次数
公式
=QUERY(B2:F16, "select B,C,D,E,F, count(B) group by B,C,D,E,F order by count(B) desc label count(B)'Frequency'", 0)
说明
- 用
QUERY函数直接分组统计相同行的出现次数,按频率降序排列 - 公式自动生成表头,无需手动添加
内容的提问来源于stack exchange,提问作者Zee Kay
相关产品推荐
相关产品推荐

