Grouping by Data Interval
Example
There is an Excel file Book1.xlsx, and the data is as follows:
dt |
val |
2000/1/1 |
61.47 |
2000/1/1 |
19.57 |
2000/1/1 |
44.53 |
2000/1/4 |
65.98 |
2000/1/5 |
142.11 |
2000/1/6 |
25.87 |
2000/1/6 |
142.11 |
2000/1/8 |
44.53 |
2000/1/9 |
873.2 |
2000/1/10 |
52.89 |
2000/1/11 |
82.4 |
2000/1/11 |
118.37 |
2000/1/11 |
354.8 |
2000/1/14 |
90.6 |
2000/1/15 |
6.49 |
2000/1/16 |
44.53 |
2000/1/17 |
33.76 |
2000/1/18 |
162.74 |
The dt column is the date, and the val column is the number. The task is to divide every 5 days into groups and calculate the average value of val in each group. The results are as follows:
dt |
avg |
2000/1/1 |
66.73 |
2000/1/6 |
227.72 |
2000/1/11 |
130.53 |
2000/1/16 |
80.34 |
Write SPL script:
A |
|
1 |
=file("Book1.xlsx").xlsimport@t() |
2 |
>st=A1(1).dt |
3 |
=A1.group@i(if(interval(st,dt)==5,st=dt,false)) |
4 |
=A3.new(dt:dt,round(~.avg(val),2):avg) |
5 |
=file("result.xlsx").xlsexport@t(A4) |
A1 Read the excel file
A2 Set the start time as st, and the initial value is the first dt
A3 Group every 5 days
A4 Calculate the average value of val in each group, and dt is the first datetime of each group
A5 Export results to result.xlsx
SPL Official Website 👉 https://www.scudata.com
SPL Feedback and Help 👉 https://www.reddit.com/r/esProc_Desktop/
SPL Learning Material 👉 https://c.scudata.com
Discord 👉 https://discord.gg/cFTcUNs7
Youtube 👉 https://www.youtube.com/@esProcDesktop
Linkedin Group 👉 https://www.linkedin.com/groups/14419406/