如何将结构不定的多个长行划分并重组成新格式

例题描述和简单分析

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

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

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


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

执行程序后,result.csv 就是需要的结果。

问答搜集

https://stackoverflow.com/questions/63698177/how-to-split-a-long-row-by-specific-range-and-add-it-as-a-new-rows-excel