行式表与交叉表互换
例1:行式转交叉
有商品日销售记录表sales.xlsx,部分数据如下图所示:
现在需要以日期为左表头、产品为上表头做一个交叉统计表,如下图所示:
编写SPL脚本:
A |
|
1 |
=T("E:/work/sales.xlsx") |
2 |
=A1.pivot(saledate;product,amount) |
3 |
=T("E:/work/sales1.xlsx",A2) |
A1 读入sales.xlsx文件数据
A2 把A1以saledate为分组进行行转列,product的值转换成新列名,amount的值为新列值。
A3 将A2保存到文件sales1.xlsx
例2:交叉转行式
Excel文件book1.xlsx中有下图所示的交叉表数据,列方向是产品规格的宽度,行方向是长度:
现在想要把数据变成行式列表,规格显示为宽度*长度,如下图的形式:
编写SPL脚本:
A |
|
1 |
=T("E:/work/book1.xlsx") |
2 |
=A1.pivot@r(Style:length;width,Price) |
3 |
=A2.select(Price).sort(width,length).new(width/"*"/length:Style,Price) |
4 |
=T("E:/work/book2.xlsx",A3) |
A1 读入book1.xlsx文件数据
A2 把A1以Style为分组进行列转行,同时命名为新列名length,选项@r表示是列转行,原来的列名转换为新列width的值,原来的交叉格值转换成新列Price的值。
A3 从A2中选出价格Price不为空的记录,然后按width和length排序,再构造新数据集,用width加星号加length为新列Style的值,同时选取Price列。
A4 将A3保存到文件book2.xlsx