将两个 csv 文件按同名字段对齐合并
例题描述和简单分析
有 txt 文件 data1.txt,如下:
ID,Name,LastName,Department
12345,John,Samon,Computer Science
14524,David,Souza,Electric and Electronic
有 txt 文件 data2.txt,如下:
ID,Q1,Q2,Q3,Midterm,Final
12345,100,90,75,89,100
14524,80,70,65,15,90
两份数据的 ID 一对一关联,生成新文本文件如下:
ID,Name,avgQ_Average,Midterm,Final,Department
12345,John,88.33,89,100,Computer Science
14524,David,71.67,15,90,Electric and Electronic
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A | |
1 | =file("data1.txt").import@ct() |
2 | =file("data2.txt").import@ct() |
3 | =join(A1:data1,ID;A2:data2,ID) |
4 | =A3.new(data1.ID,data1.Name,round(avg([data2.Q1,data2.Q2,data2.Q3]),2):avgQ_Average,data2.Midterm,data2.Final,data1.Department) |
5 | =file("mergedFile.txt").export@ct(A4) |
简要说明:
A1 读取 txt 数据
A2 读取 txt 数据
A3 A1和 A2 的根据 ID 一对一关联
A4 按要求计算出结果序表
A5 结果导出至mergedFile.txt
JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》。
https://stackoverflow.com/questions/56187795/how-can-i-take-the-length-from-the-text-files-in-java
英文版