4.7 指定次序有重复值的排序

 

有如下数据,在字段 Header1 中存储了一些索引号,但这个索引号可能有重复值,就像下图中红框所示有多个 101:

imagepng imagepng

将 data 页的数据按 Target 页的顺序排序,其中第 1 个 101 对应 Header1 为 101 的第 1 条记录,第 2 个 101 对应第 2 条记录,第 3 个 101 找不到第 3 条记录,则为空行。
脚本:

A
1 =T(“data.xlsx”;“Target”).derive(:key)
2 = T(“data.xlsx”;“data”).derive(:key)
3 =A1.group(Header1).run(~.run(key=Header1/“_”/#))
4 =A2.group(Header1).run(~.run(key=Header1/“_”/#))
5 =A2.align(A1:key,key)

A1 读入 Target 页数据并新增一列 key,用于生成要用来对齐的键值
A2 读入 data 页数据并新增一列 key,用于生成要用来对齐的键值
A3 将 A1 按 Header1 分组,循环每一组,再循环组中每条记录,让 key 的值为 Header1 加下划线再加它在组中的序号
A4 与 A3 同理
A5 让 A1 中的 key 按照 A2 中的 key 的顺序对齐

运行结果:

Header1 Header2 Header3
101 H2_1 H3_1
104 H2_8 H3_8
101 H2_5 H3_5
102 H2_2 H3_2
103 H2_3 H3_3
103 H2_6 H3_6