将 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 脚本》。
英文版