如何拆分文本并分类统计

例题描述和简单分析
将下面 A 列数据拆分成右边的形式,有 @符号的要加到一起。相关的数据如下:

a100png

需要统计出孔 (即 @的数据)、夹及其它的数据。

解法及简要说明
1. 在集算器中设置 demo.dfx 脚本参数:

a101png
设置参数 arg1 为 Excel中 A列数据。

2. 编写脚本 demo.dfx
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()) / 将计算结果存入新序表返回
3.       设置参数后,调试运行一下,可看到 A1 格值:
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]]
  执行到 A2 时,A1 格值:
A1 Member
[5,2,2]
[4,0,2]
[3,2,0]
[5,2,2]
[3,0,2]
[9,2,0]
  4.      执行脚本返回结果:
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 执行公式,填充结果如下:

a102png