RangeFractile — скрипт и функция диаграммы

RangeFractile() возвращает значение, соответствующее n-ному fractile (квантилю) диапазона чисел.

Примечание: RangeFractile() использует линейное интерполирование между ближайшими рядами при вычислении квантиля.

Syntax:  

RangeFractile(fractile, first_expr[, Expression])

Return data type: число

Arguments:  

Аргумент этой функции может содержать функции между записями, которые в свою очередь возвращают список значений.

Аргумент Описание
fractile Число от 0 до 1, соответствующее квантилю, которое подлежит вычислению.
first_expr Выражение или поле, содержащее данные для измерения.
Expression Дополнительные выражения или поля, содержащие диапазон значений для измерения.

Добавьте образец скрипта в свой документ и запустите. Затем добавьте на лист документа как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

RangeTab:

LOAD recno() as RangeID, RangeFractile(0.5,Field1,Field2,Field3) as MyRangeFrac INLINE [

Field1, Field2, Field3

10,5,6

2,3,7

8,2,8

18,11,9

5,5,9

9,4,2

];

Результирующая таблица показывает возвращенные значения функции MyRangeFrac для каждой записи в таблице.
RangeID MyRangeFrac
1 6
2 3
3 8
4 11
5 5
6 4

Examples and results:  

Примеры Результаты
RangeFractile (0.24,1,2,4,6) Возвращает 1,72
RangeFractile(0.5,1,2,3,4,6)

Возвращает 3

RangeFractile (0.5,1,2,5,6)

Возвращает 3,5

Пример с выражением:

RangeFractile (0.5, Above(Sum(MyField),0,3))

В этом примере функция между записями Above() содержит дополнительные аргументы offset и count. В результате формируется диапазон результатов, который можно использовать в качестве данных, вводимых в любую функцию над выборкой. В этом случае функция Above(Sum(MyField),0,3) возвращает значения поля MyField для текущей строки и двух строк над ней. Эти значения обеспечивают значения, вводимые в функцию RangeFractile(). Таким образом, для нижней строки в таблице ниже это является эквивалентом RangeFractile(0.5, 3,4,6), т. е. вычисление квантиля 0,5 для серий 3, 4 и 6. Первые две строки в таблице ниже. Количество значений в диапазоне сокращается соответственно, если над текущей строкой нет других строк. Похожие результаты будут и для других функций между записями.

Данные, используемые в примерах:

MyField RangeFractile(0.5, Above(Sum(MyField),0,3))
1 1
2 1.5
3 2
4 3
5 4
6 5

Данные, используемые в примерах:

RangeTab:

LOAD * INLINE [

MyField

1

2

3

4

5

6

] ;