将 csv 文件按列拆分到多个文件

例题描述和简单分析

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

X,Y,Z,Sc1,Sc2,Sc3,Sc4

1,0,0,5,7,9,10

0,1,1,6,8,4,0

0,0,1,3,3,8,2

现在要拆成 4 个文件,其中 X,Y,Z,3 个字段始终保留。结果如下:

File 1       | File 2       | File 3       | File 4

----------------------------------------------------------

[Sc1, X,Y,Z] | [Sc2, X,Y,Z] | [Sc3, X,Y,Z] | [Sc4,  X,Y,Z]

[5,   1,0,0] | [7,   1,0,0] | [9,   1,0,0] | [10,   1,0,0]

[6,   0,1,1] | [8,   0,1,1] | [4,   0,1,1] | [0,   0,1,1]

[3,   0,0,1] | [3,   0,0,1] | [8,   0,0,1] | [2,   0,0,1]

解法及简要说明

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


A

1

=file("csv.csv").import@cw()

2

=4.(file("File"/~/".csv"))

3

=A2.run(~.write(A1.([~(3+A2.#),~(1),~(2),~(3)]).concat@nc()))

简要说明:

A1   把 csv 读成序列的序列

A2  n个文件分别为 File[n].csv,这里 n 是 4

A3  依次从 A1(序列的序列)中取相应的列,拼成串写入各文件

JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》

问答搜集

https://stackoverflow.com/questions/63346048/i-need-to-take-a-csv-file-and-split-it-into-separate-files-based-on-column-heade