横向拼接列不相同的表

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

横向拼接列不相同的表,等值连接,用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值