如何按间隔大小把相邻数据分组
现有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是需要计算出的结果 。