找出同分类下的相邻行

这篇博客介绍了如何使用SPL脚本来处理Excel数据,特别是针对Block相同行的数据组,计算同一组内上一行(BenchAbove)和下一行(BenchBelow)的Bench值。在不改变行顺序的情况下,通过衍生新列实现了这一目标,适用于需要分析和关联相邻数据的场景。

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

举例

下面的 Excel 中,Block 相同的行属于同一组。

BlockBench
41
51
61
48
58
68
49
59
69
45
55
65

目标:计算出 2 个新列,BenchAbove 为同一组内的上一行的 Bench,如果本行为第 1 行,则 BenchAbove 为空。BenchBelow 为同一组内的下一行的 Bench,如果本行为最后 1 行,则 BenchBelow 为空。结果如下:

BlockBenchBenchAboveBenchBelow
418
518
618
4819
5819
6819
4985
5985
6985
459
559
659

这类问题的难点是:在不改变行顺序的前提下,获取同一组内的上一行下一行。

编写 SPL 脚本:

A
1=file("data.xlsx").xlsimport@t()
2

=A1.derive(~[:-1].select@1z(Block==A2.Block).Bench:BenchAbove,

~[1:].select@1(Block==A2.Block).Bench:BenchBelow)

3=file("result.xlsx").xlsexport@(A2)

A1  读取 Excel 数据

A2  获取相邻行,~[:-1] 获取当前行之前的所有行,~[1:] 则是当前行之后的所有行,select 用于查找,@z 表示从后往前找,@1 表示找到 1 条就结束。

A3  结果导出至 result.xlsx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值