现有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是需要计算出的结果 。