行列的上层分类互转

这篇博客通过两个示例详细介绍了如何使用SPL脚本进行行列转换。例1展示了如何将Excel中列转行,涉及读取csv文件、转置序列和使用pivot函数;例2则解释了行转列的过程,包括按国家分组和序列转置。最终,转换结果导出到新的csv文件中。

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

举例

例1:列转行

有 Excel 文件 csv.csv,数据如下所示:

C1C2C3
MeatoilVegetableMeatVegetableoilMeatoilVegetable
864186224111213

csv 文件里 N 条横向摆放的数据,第1行是每个数据的国家字段的值,第2行是每个数据的其他列名,第3行是每列对应的数值。现在要将该文件整理成规范的行式数据,结果如下:

countryMeatVegetableoil
C1846
C2186224
C3111312

编写 SPL 脚本:

A
1=file("csv.csv").read()
2=A1.split@n(",")
3=transpose(A2).run(if(~(1)=="",~(1)=~[-1](1)))
4=create(country,cate,value)
5>A3.(A4.record(~))
6=A4.pivot(country;cate,value)
7=file("result.csv").export@ct(A6)

A1  把 csv 的数据读成串

A2  把串拆成序列的序列

A3  转置序列的序列,把第一列国家补完整

A4  建空序表 (country,cate,value)

A5  将 A3 的数据依次填入序表

A6  用 pivot 函数行转列

A7  结果导出到 result.csv

例2:行转列

有 Excel 文件 csv.csv,数据如下所示:

countryMeatVegetableoil
C1846
C2186224
C3111312

首行是列名,分别是国家和其他信息列。现在要将该文件整理成如下形式:

C1C2C3
MeatVegetableoilMeatVegetableoilMeatVegetableoil
846186224111312

编写 SPL 脚本:

A
1=file("csv.csv").import@ct()
2=A1.pivot@r(country;cate,value;Meat,Vegetable,oil)
3=A2.group(country).(~.run(country=if(#==1,country,""))).conj()
4=transpose(A3.(#1|#2|#3)).concat@nc()
5=file("result.csv").write(A4)

A1   读取 csv 数据

A2   列转行操作,将列名Meat,Vegetable,oil作为 cate 的值,原Meat,Vegetable,oil列对应的数值作为 value 列的数据

A3  按国家分组,每组非首行国家数值为空,合并

A4  合并各列,变为序列的序列,对序列的序列转置后按逗号、回车符转成串

A5  A4的结果串写入 result.csv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值