横向拼接列不相同的表,等值连接,用join函数
举例
例1【数据都能对上】
有三个 Excel 文件“emp.xlsx”,分别是数学、体育、英语成绩单,部分数据如下所示:



现在需要把三门学科的成绩横向拼接到一起,结果如下:

编写 SPL 脚本:
| A | |
| 1 | =["math","PE","english"].(file(~/".xlsx").xlsimport@t()) |
| 2 | =join(A1(1):math,id;A1(2):PE,id;A1(3):english,id) |
| 3 | =A2.new(math.id,math.name,math.math,PE.PE,english.english) |
| 4 | =file("result.xls").xlsexport@t(A3) |
A1 分别从 Excel 中读取数学、体育、英语的学生成绩数据
A2 按 id 关联
A3 选出 id、name、math、PE、english 列
A4 结果导出至 result.xlsx
例2【数据对不上】
有三个 Excel 文件“emp.xlsx”,分别是数学、体育、英语成绩单,其中数据不全,math 中少了 id 为 3 的学生成绩,PE 中少了 id 为 2 的学生成绩,english 中少了 id 为 1 的学生成绩,部分数据如下所示:



现在需要把三门学科的成绩横向拼接到一起,结果如下:

编写 SPL 脚本:
| A | |
| 1 | =["math","PE","english"].(file(~/".xlsx").xlsimport@t()) |
| 2 | =join@f(A1(1):math,id;A1(2):PE,id;A1(3):english,id) |
| 3 | =A2.new([math.id,PE.id,english.id].ifn():id,[math.name,PE.name,english.name].ifn():name,math.math,PE.PE,english.english) |
| 4 | =file("result.xls").xlsexport@t(A3) |
A1 分别从 Excel 中读取数学、体育、英语的学生成绩数据
A2 按 id 关联,join 用 @f 选项,关联结果如下:

若不使用 @f,则会丢失数据,如下:

A3 选出 id、name、math、PE、english 列,选 id 和 name 时,因为缺值,需要用 A.ifn 函数确保选出数据
A4 结果导出至 result.xlsx
本文通过两个示例介绍了如何使用SPL脚本来横向拼接不同Excel文件中的学生成绩数据。在数据完全匹配的情况下,可以简单地使用`join`函数;而在数据不全时,利用`join@f`选项来处理缺失值,确保所有记录都被保留。最后,通过`new`和`ifn`函数选择和填充列,并将结果导出到新的Excel文件。
686

被折叠的 条评论
为什么被折叠?



