RangeFractile Функция скрипта и диаграммы
RangeFractile() возвращает значение, соответствующее n-ному fractile (квантилю) диапазона чисел.
Синтаксис:
RangeFractile(fractile, first_expr[, Expression])
Возвращаемые типы данных: число
Аргументы:
Аргументы этой функции могут содержать межзаписные функции, которые в свою очередь возвращают список значений.
| Аргумент | Описание |
|---|---|
| fractile | Число от 0 до 1, соответствующее квантилю (выраженному в дробном виде), которое подлежит вычислению. |
| first_expr | Выражение или поле, содержащее данные для измерения. |
| Expression | Дополнительные выражения или поля, содержащие диапазон значений для измерения. |
Примеры и результаты:
| Примеры | Результаты |
|---|---|
| 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 |
Пример:
Добавьте образец скрипта в свое приложение и запустите. Чтобы увидеть результаты, добавьте поля, перечисленные в столбце результатов, в лист приложения.
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 |
Пример с выражением:
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
] ;