4.7 指定次序有重复值的排序
有如下数据,在字段 Header1 中存储了一些索引号,但这个索引号可能有重复值,就像下图中红框所示有多个 101:
将 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 |