现有excel文件data.xlsx,部分内容如下: dt | val | 2000/1/1 0:04 | 2339 | 2000/1/1 0:08 | 8724 | 2000/1/1 0:33 | 8712 | 2000/1/1 0:49 | 8748 | 2000/1/1 0:52 | 3795 | 2000/1/1 0:58 | 8089 | 2000/1/1 1:02 | 1205 | 2000/1/1 1:07 | 2326 | 2000/1/1 1:32 | 9059 |
dt列是时间,val列是数值。每当时间间隔超过 10 分钟,则新分一组,计算各组内val的平均值,部分结果如下: dt | avg | 2000/1/1 0:04 | 5531.5 | 2000/1/1 0:33 | 8712 | 2000/1/1 0:49 | 6877.33 | 2000/1/1 1:02 | 1765.5 | 2000/1/1 1:32 | 4733.25 |
借助集算器可以很方便地完成 1. 在集算器中编写脚本avg.dfx: | A | B | 1 | =file("data.xlsx").xlsimport@t() | /读取Excel文件内容 | 2 | >st=A1(1).dt | /设起始时间为st,初始值是第一个dt | 3 | =A1.group@i(if(interval@s(st,dt)>600,st=dt,false)) | /分组,若当前的时间与起始时间间隔超过10分钟,则新分一组 | 4 | =A3.new(dt:dt,round(~.avg(val),2):avg) | /计算每个分组内的val均值,dt为每组的第一个时间 |
2. 执行脚本,A4是需要计算出的结果 。
|