Funkcia pre každú hodnotu z vektora skupín vypočíta danú agregáciu nad tými hodnotami zdrojového vektora, ktorým prislúcha rovnaká skupina. Výstupný vektor má rovnaký rozmer a časy ako vektor skupín. Neplatné hodnoty v zdrojovom vektore sú v agregácii ignorované.
VECTOR %GroupAggregate( INT _aggrType, VECTOR _groups, VECTOR _source, VECTOR _sourceGroups ) |
| _aggrType | |
| _groups | Vektor skupín. |
| _source | Zdrojový vektor. |
| _sourceGroups | Vektor skupín zdrojového vektora. Musí mať rovnakú dĺžku ako zdrojový vektor. |
-- Vypočíta priemernú hodnotu pre každý deň v týždni za predchádzajúci rok z hodnôt vektora Vector.Src.
-- Výsledný vektor bude obsahovať 7 hodnôt, kde prvá hodnota bude priemer všetkých pondelkov minulého roka,
-- druhá hodnota bude priemer všetkých utorkov atď.
TIME _bt, _et, _srcBt, _srcEt;
VECTOR _v;
_et := %NextWeek(_BT) - 1;
_bt := %BeginWeek(_et);
_srcEt := %BeginYear(_bt) - 1;
_srcBt := %BeginYear(_srcEt);
_v := %GroupAggregate(
%OP_Avg,
%LoadVectorData("Calendar.DayOfWeek", _bt, _et, %STEP_Day),
%LoadVectorData("Vector.Src", _srcBt, _srcEt, %STEP_Day),
%LoadVectorData("Calendar.DayOfWeek", _srcBt, _srcEt, %STEP_Day)
);
RETURN _v; |