Поделиться через


series_fill_linear()

Линейная интерполяция отсутствующих значений в ряде.

Принимает выражение, содержащее динамический числовой массив, в качестве входных данных, выполняет линейную интерполяцию для всех экземпляров missing_value_placeholder и возвращает результирующий массив. Если начало и конец массива содержат missing_value_placeholder, он заменяется ближайшим значением, отличном от missing_value_placeholder. Эту функцию можно отключить. Если весь массив состоит из missing_value_placeholder, массив заполняется constant_value или 0, если не указано.

Синтаксис

series_fill_linear(Серии, [ missing_value_placeholder [,fill_edges [,constant_value ]]])

Дополнительные сведения о соглашениях о синтаксисе.

Параметры

Имя Тип Обязательно Описание
Серии dynamic ✔️ Массив числовых значений.
missing_value_placeholder скаляр Задает заполнитель для отсутствующих значений. Значение по умолчанию — double(NULL). Значение может иметь любой тип, который будет преобразован в фактические типы элементов. double(null), long(null) и int(null) имеют одинаковое значение.
fill_edges bool Указывает, следует ли заменить missing_value_placeholder в начале и конце массива ближайшим значением. По умолчанию: true. Если задано значение false, missing_value_placeholder в начале и конце массива будут сохранены.
constant_value скаляр Относится только к массивам, полностью состоящим из значений NULL . Этот параметр задает значение константы для заполнения ряда. По умолчанию установлено значение 0. Присвоение этому параметру значения double(NULL) сохраняет значения NULL .

Возвращаемое значение

Линейная интерполяция рядов с использованием указанных параметров. Если ряд содержит только int элементы или long , то линейная интерполяция возвращает округленные интерполированные значения, а не точные.

Примечание

  • При создании рядов с помощью оператора make-series укажите значение null в качестве значения по умолчанию, чтобы использовать функции интерполяции, такие как series_fill_linear() последующие. См. описание.
  • Если missing_value_placeholder имеет значение double(null) или опущен, результат может содержать значения NULL . Чтобы заполнить эти значения NULL , используйте другие функции интерполяции. Только series_outliers() поддерживает значения NULL во входных массивах.
  • series_fill_linear() сохраняет исходный тип элементов массива.

Пример

let data = datatable(arr: dynamic)
    [
    dynamic([null, 111.0, null, 36.0, 41.0, null, null, 16.0, 61.0, 33.0, null, null]), // Array of double    
    dynamic([null, 111, null, 36, 41, null, null, 16, 61, 33, null, null]), // Similar array of int
    dynamic([null, null, null, null])                                                   // Array with missing values only
];
data
| project
    arr, 
    without_args = series_fill_linear(arr),
    with_edges = series_fill_linear(arr, double(null), true),
    wo_edges = series_fill_linear(arr, double(null), false),
    with_const = series_fill_linear(arr, double(null), true, 3.14159)  

Выходные данные

arr without_args with_edges wo_edges with_const
[null,111.0;null;36.0;41.0;null;null;16.0;61.0;33.0;null;null] [111.0,111.0,73.5,36.0,41.0,32.667,24.333,16.0,61.0,33.0,33.0,33.0] [111.0,111.0,73.5,36.0,41.0,32.667,24.333,16.0,61.0,33.0,33.0,33.0] [null,111.0;73.5;36.0;41.0;32.667;24.333;16.0;61.0;33.0;null;null]. [111.0,111.0,73.5,36.0,41.0,32.667,24.333,16.0,61.0,33.0,33.0,33.0]
[null,111,null,36,41,null,null,16,61,33,null,null] [111,111,73,36,41,32,24,16,61,33,33,33] [111,111,73,36,41,32,24,16,61,33,33,33] [null,111;73;36;41;32;24;16;61;33;null;null] [111,111,74,38, 41,32,24,16,61,33,33,33]
[null,null,null,null] [0.0,0.0,0.0,0.0] [0.0,0.0,0.0,0.0] [0.0,0.0,0.0,0.0] [3.14159,3.14159,3.14159,3.14159]