行式表与交叉表互换

 

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   A1saledate为分组进行行转列,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   A1Style为分组进行列转行,同时命名为新列名length,选项@r表示是列转行,原来的列名转换为新列width的值,原来的交叉格值转换成新列Price的值。

A3   A2中选出价格Price不为空的记录,然后按widthlength排序,再构造新数据集,用width加星号加length为新列Style的值,同时选取Price列。

A4   A3保存到文件book2.xlsx