如何拆分文本并分类统计
例题描述和简单分析
将下面 A 列数据拆分成右边的形式,有 @符号的要加到一起。相关的数据如下:
需要统计出孔 (即 @的数据)、夹及其它的数据。
解法及简要说明
1. 在集算器中设置 demo.dfx 脚本参数:
设置参数 arg1 为 Excel中 A列数据。
A | B | |
1 | =(arg1).(~.split(",").(~.split("="))) | / 将数据按行拆分成键值结构 |
2 | >A1.run(r=[0,0,0], ~.(if(left(~(1), 1)=="@", r(1)+=int(~(2)), if(left(~(1), 1)=="夹", r(2)+=int(~(2)), if(left(~(1), 1)=="其", r(3)+=int(~(2)) )))), ~=r) |
/ 按每行的键分类进行值的累计求和存入序列 r |
3 | return create(孔, 夹, 其它).record(A1.conj()) | / 将计算结果存入新序表返回 |
A1 | Member |
[[@10,5],[夹,2],[其它,2]] | |
[[@10,4],[开槽,1],[其它,2]] | |
[[@10,3],[夹,2],[开槽,2]] | |
[[@10,2],[@13,3],[夹,2],[其它,2]] | |
[[@10,1],[@14,2],[开槽,1],[其它,2]] | |
[[@10,6],[@14,3],[夹,2],[开槽,2]] |
A1 | Member |
[5,2,2] | |
[4,0,2] | |
[3,2,0] | |
[5,2,2] | |
[3,0,2] | |
[9,2,0] |
A3 | 孔 | 夹 | 其它 |
5 | 2 | 2 | |
4 | 0 | 2 | |
3 | 2 | 0 | |
5 | 2 | 2 | |
3 | 0 | 2 | |
9 | 2 | 0 |
A2: 对于每行数据来说,r 为存储的记录数据,将相同键的数值进行累计求和,存入序列 r 中; 遍历所有行,计算出各个物件的数量。
5 、调用 demo.dfx 脚本:Excel 中选择网格 B1:D7,输入公式: =esproc("demo", A2:A7),同时按 ctrl+shift+enter 执行公式,填充结果如下: