举例
有 Excel 文件 mat.xlsx,部分数据如下所示:
5 | 10 | 2 | 1 | 9 |
5 | 2 | 10 | 3 | 9 |
7 | 4 | 8 | 6 | 10 |
5 | 3 | 7 | 1 | 1 |
5 | 2 | 5 | 4 | 8 |
7 | 4 | 2 | 7 | 1 |
9 | 9 | 10 | 4 | 8 |
6 | 1 | 7 | 2 | 7 |
10 | 6 | 7 | 8 | 3 |
... | ... | ... | ... | ... |
数字的范围从 1 至 10,现在要计算每列中各个数字出现的次数,结果如下(共 10 行,对应数字 1 至 10,每列是对应列出现该数字的次数):
11 | 10 | 10 | 7 | 11 |
9 | 8 | 7 | 5 | 9 |
5 | 9 | 4 | 9 | 8 |
9 | 15 | 5 | 11 | 7 |
13 | 6 | 11 | 15 | 10 |
11 | 9 | 14 | 12 | 8 |
15 | 11 | 13 | 5 | 9 |
7 | 11 | 7 | 12 | 15 |
11 | 9 | 9 | 12 | 11 |
9 | 12 | 20 | 12 | 12 |
编写SPL脚本:
A | |
1 | =file("mat.xlsx").xlsimport() |
2 | =A1.fno().(A1.field(~).groups@nb(~;count(~)).(#1)) |
3 | =transpose(A2) |
4 | =file("result.xlsx").xlsexport@w(A3) |
A1 读取 excel 文件内容
A2 循环每列,计算每列中各个数值重复出现的次数(group@n,按序号分组,用 count 求每个数字重复出现的次数,@b 是只返回聚合列)
A3 转置,行转列
A4 结果导出至 result.xlsx