asof
语法
asof(X, Y)
详情
当 X 是递增向量时,对于每个 Y 中的元素 y,asof
返回 X 中不大于 y 的元素的最大序号(从 0 开始编号)。如果没有找到,则返回 -1。
当 X 是索引序列或索引矩阵时,Y 必须是向量。对于 Y 中的每个元素 y,函数在 X 的行索引中查找不大于 y 的最大索引,并返回该索引对应的数据。如果没有找到,则返回 NULL。
参数
X 必须是一个递增的向量、索引序列、索引矩阵。若 X 是索引序列或索引矩阵,其行索引必须递增。
Y 可以是标量、向量、数组向量、元组、矩阵、字典、表。若 X 是索引序列或索引矩阵,Y 必须是向量。
返回值
若 X 是向量,返回 INT 类型,形式与 Y 相同。
若 X 是索引序列,返回索引序列,行索引为 Y。若 X 是索引矩阵,返回索引矩阵,行索引为 Y,列标签与 X 相同。
例子
例1. X 为向量。
asof(1..100, 60 200 -10)
// output:
[59,99,-1]
0 0 0 1 1 1 1 2 2 3 asof 1
// output:
6
例2. X 为索引序列。
index = [2023.05.04, 2023.05.06, 2023.05.10]
s = indexedSeries(index, 1..3)
y = [2023.05.03, 2023.05.04, 2023.05.05, 2023.05.09, 2023.05.12]
asof(s, y)
| label | #0 |
|---|---|
| 2023.05.03 | |
| 2023.05.04 | 1 |
| 2023.05.05 | 1 |
| 2023.05.09 | 2 |
| 2023.05.12 | 3 |
例3. X 为索引矩阵。
index = [2023.05.04, 2023.05.06, 2023.05.10]
m = matrix(1..3, 11..13).rename!(index, `A`B).setIndexedMatrix!()
y = [2023.05.03, 2023.05.04, 2023.05.05, 2023.05.09, 2023.05.12]
asof(m, y)
| label | A | B |
|---|---|---|
| 2023.05.03 | ||
| 2023.05.04 | 1 | 11 |
| 2023.05.05 | 1 | 11 |
| 2023.05.09 | 2 | 12 |
| 2023.05.12 | 3 | 13 |
