2506 lines
72 KiB
Markdown
2506 lines
72 KiB
Markdown
# Builtin - 基础 / 数组
|
||
|
||
## `getStrindexnum(value)`
|
||
|
||
返回字符串下标的个数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ----- | -------- |
|
||
| `value` | array | 数组类型 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array("a1": 1, "a2": 2, 1: 3);
|
||
return getStrindexnum(arr);
|
||
// 输出:2
|
||
```
|
||
|
||
## `getstrindexs(value)`
|
||
|
||
返回数组类型,存储参数Value的所有的字符串下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ----- | -------- |
|
||
| `value` | array | 数组类型 |
|
||
|
||
返回:array of string
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array("a1": 1, "a2": 2, "a3": 3);
|
||
return getstrindexs(arr);
|
||
// 输出:array(“a1”,”a2”,”a3”)。
|
||
```
|
||
|
||
## `getintindexs(value)`
|
||
|
||
返回数组类型,存储数组Value的所有的数字下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ----- | -------- |
|
||
| `value` | array | 数组类型 |
|
||
|
||
返回:array of integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array(1: "p1", 2: "p2", 3: "p3", "a4": "p4");
|
||
return getintindexs(arr);
|
||
// 输出:array(1,2,3)
|
||
```
|
||
|
||
## `getAllIndexs(value)`
|
||
|
||
返回数组类型,存储数组Value的所有下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ----- | -------- |
|
||
| `value` | array | 数组类型 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array("p1": 1, "p2": 2, "p3": 3);
|
||
return getAllIndexs(arr); // 输出:array(“p1”,”p2”,”p3”)
|
||
```
|
||
|
||
## `length(value)`
|
||
|
||
返回字符串、二进制流或者数组或者Matrix的行长度。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ----------------------------- | ------------------------------------ |
|
||
| `value` | string\|binary\|array\|matrix | 字符串、二进制流或数组或者Matrix类型 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array(("p1": 1, "p2": 2, "p3": 3), ("p1": 4, "p2": 5, "p3": 6));
|
||
return length(arr); // 输出:2
|
||
```
|
||
|
||
## `sortTableByField(value, field, sortdir)`
|
||
|
||
对一个表类型的数组Value用字段名Field排序,排序方向由sortdir决定,如果省略sortdir参数或者设置sortdir为1,正序排序,否则逆序排序。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------ | ---------------------------------------- |
|
||
| `value` | array | 二维数组; |
|
||
| `field` | string | 字符串,数组的列下标; |
|
||
| `sortdir` | bool | 布尔型,排序方向,1表示正序,0表示逆序。 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array(
|
||
("p1": 1, "p2": 2, "p3": 3),
|
||
("p1": 4, "p2": 5, "p3": 6),
|
||
("p1": 66, "p2": 200, "p3": 36),
|
||
("p1": 30, "p2": 500, "p3": 40)
|
||
);
|
||
sortTableByField(arr, "p1", 1); // sortdir=1按"p1"正序,sortdir=0反序
|
||
return arr;
|
||
// 输出:
|
||
// array(
|
||
// ("p1":1, "p2":2, "p3":3),
|
||
// ("p1":4, "p2":5, "p3":6),
|
||
// ("p1":30, "p2":500, "p3":40),
|
||
// ("p1":66, "p2":200, "p3":36))
|
||
```
|
||
|
||
## `filterIn(r, v, field, b_return_sub_result=true)`
|
||
|
||
返回指定列的值在过滤集内的子结果集或者下标列表。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------------------- | ------ | ------------------------------------------------------------------------------ |
|
||
| `r` | array | 待过滤的数据表或数组。 |
|
||
| `v` | array | 过滤集。 |
|
||
| `field` | string | 指定列名;为 `nil` 时按整行或一维数组元素匹配。 |
|
||
| `b_return_sub_result` | bool | 可选参数,默认 `true`。为 `true` 时返回子结果集,为 `false` 时返回行下标列表。 |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
范例 01:过滤表中指定列的值。
|
||
|
||
```tsl
|
||
a := array(
|
||
("a": 0, "b": 0, "c": 0),
|
||
("a": 1, "b": 0, "c": 2),
|
||
("a": 2, "b": 1, "c": 4),
|
||
("a": 3, "b": 1, "c": 6),
|
||
("a": 4, "b": 2, "c": 8),
|
||
("a": 5, "b": 2, "c": 10),
|
||
("a": 6, "b": 3, "c": 12)
|
||
);
|
||
return filterIn(a, array(1, 2, 5), "a");
|
||
// 输出:array(
|
||
// ("a":1, "b":0, "c":2),
|
||
// ("a":2, "b":1, "c":4),
|
||
// ("a":5, "b":2, "c":10)
|
||
// )
|
||
```
|
||
|
||
范例 02:按整行数据筛选子集。
|
||
|
||
```tsl
|
||
a := array();
|
||
for i := 0 to 15 do
|
||
begin
|
||
a[i]["a"] := i;
|
||
a[i]["b"] := i div 2;
|
||
a[i]["c"] := i * 2;
|
||
end;
|
||
return filterIn(a, array(("a": 2, "b": 1, "c": 4), ("a": 3, "b": 1, "c": 4)), nil);
|
||
// 输出:array(
|
||
// ("a":2, "b":1, "c":4)
|
||
// )
|
||
```
|
||
|
||
范例 03:按多列组合筛选子集。
|
||
|
||
```tsl
|
||
a := array();
|
||
for i := 0 to 15 do
|
||
begin
|
||
a[i]["a"] := i;
|
||
a[i]["b"] := i div 2;
|
||
a[i]["c"] := i * 2;
|
||
end;
|
||
return filterIn(a, array(("a": 2, "b": 1), ("a": 3, "b": 1)), array("a", "b"));
|
||
// 输出:array(
|
||
// ("a":2, "b":1, "c":4),
|
||
// ("a":3, "b":1, "c":6)
|
||
// )
|
||
```
|
||
|
||
范例 04:返回符合指定列数据的行下标。
|
||
|
||
```tsl
|
||
a := array();
|
||
for i := 0 to 15 do
|
||
begin
|
||
a[i]["a"] := i;
|
||
a[i]["b"] := i div 2;
|
||
a[i]["c"] := i * 2;
|
||
end;
|
||
return filterIn(a, array(("a": 2, "b": 1), ("a": 3, "b": 1)), array("a", "b"), false);
|
||
// 输出:array(2, 3)
|
||
```
|
||
|
||
范例 05:过滤一维数组。
|
||
|
||
```tsl
|
||
return filterIn(array(1, -5, 10, 2, 10, 14, -5), array(2, 3, 10), nil);
|
||
// 输出:array(10, 2, 10)
|
||
```
|
||
|
||
## `filterNotIn(r, v, field, b_return_sub_result=true)`
|
||
|
||
返回指定列的值不在过滤集内的子结果集或者下标列表。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------------------- | ------ | ------------------------------------------------------------------------------ |
|
||
| `r` | array | 待过滤的数据表或数组。 |
|
||
| `v` | array | 过滤集。 |
|
||
| `field` | string | 指定列名;为 `nil` 时按整行或一维数组元素匹配。 |
|
||
| `b_return_sub_result` | bool | 可选参数,默认 `true`。为 `true` 时返回子结果集,为 `false` 时返回行下标列表。 |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
范例 01:按指定列过滤数据表,并同时查看子结果集和行下标。
|
||
|
||
```tsl
|
||
a := array();
|
||
for i := 0 to 5 do
|
||
begin
|
||
a[i]["a"] := i;
|
||
a[i]["b"] := i div 2;
|
||
a[i]["c"] := i * 2;
|
||
end;
|
||
b := array(1, 3, 5);
|
||
c1 := filterNotIn(a, b, "a"); // 过滤结果
|
||
c2 := filterNotIn(a, b, "a", false); // 过滤仅返回下标
|
||
return array(c1, c2);
|
||
// 输出:
|
||
// array(
|
||
// (
|
||
// ("a":0, "b":0, "c":0),
|
||
// ("a":2, "b":1, "c":4),
|
||
// ("a":4, "b":2, "c":8)),
|
||
// (0, 2, 4))
|
||
```
|
||
|
||
范例 02:按整行数据过滤二维数组,保留重复行。
|
||
|
||
```tsl
|
||
t := array(
|
||
("a": 0, "b": 0, "c": 0),
|
||
("a": 1, "b": 0, "c": 2),
|
||
("a": 2, "b": 1, "c": 4),
|
||
("a": 2, "b": 1, "c": 4),
|
||
("a": 4, "b": 2, "c": 8),
|
||
("a": 4, "b": 2, "c": 8),
|
||
("a": 6, "b": 3, "c": 12)
|
||
);
|
||
return filterNotIn(t, array(("a": 2, "b": 1, "c": 4)), nil);
|
||
// 输出:
|
||
// array(
|
||
// ("a":0, "b":0, "c":0),
|
||
// ("a":1, "b":0, "c":2),
|
||
// ("a":4, "b":2, "c":8),
|
||
// ("a":4, "b":2, "c":8),
|
||
// ("a":6, "b":3, "c":12))
|
||
```
|
||
|
||
范例 03:过滤一维数组。
|
||
|
||
```tsl
|
||
return filterNotIn(array(1, -5, 10, 2, 10, 14, -5), array(2, 3, 10), nil);
|
||
// 输出:array(1, -5, 14, -5)
|
||
```
|
||
|
||
## `sortArray(value, sortdir)`
|
||
|
||
对一个一维数组进行排序,方向为sortdir;如果省略sortdir参数,默认为1,正序排序;设置为0时,逆序排序。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ----- | ---------------- |
|
||
| `value` | array | 一维数组 |
|
||
| `sortdir` | bool | 布尔型,排序方向 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
arr := array(1, 6, 3);
|
||
sortArray(arr);
|
||
return arr;
|
||
// array(1,3,6)
|
||
```
|
||
|
||
## `reIndex(data, index_info1, index_info2, index_info_n)`
|
||
|
||
修改数组下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------------- | ---------- | ------------------------------------------------------------------------------------------- |
|
||
| `data` | array | 需要重构的数组 |
|
||
| `index_info1` | nil\|array | 第一维的重构信息,如果为NIL则表示该维度不重构,数组以需要重构的下标为下标新下标为值的模式。 |
|
||
| `index_info2` | nil\|array | 第二维的重构信息,可省略 |
|
||
| `index_info_n` | nil\|array | 第N维的重构信息,可省略 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 修改数字列名数组为字符串列名数组,即将0,1,2(自增数字)列名重构为"a","b","c"列名的数组
|
||
a := rand(10, 3);
|
||
s := array("a", "b", "c");
|
||
reIndex(a, nil, s);
|
||
return a;
|
||
// 修改数字行标数组为字符串行标数组,即将0,1,2(自增数字)行标重构为"a","b","c"行标的数组
|
||
a := rand(3, 3);
|
||
s := array("a", "b", "c");
|
||
reIndex(a, s);
|
||
return a;
|
||
// 通过设置行标为nil进行删除该行记录
|
||
a := array("A": 0, "B": 1, "D": 2, "E": 3);
|
||
reIndex(a, array("A": "A1", "D": nil));
|
||
return a;
|
||
// 返回:array("A1":0,"B":1,"E":3);
|
||
// 如果我们要对多维数组进行处理
|
||
a := rand(10, array("A", "B", "D", "E"); // 初始化一个四列的二维矩阵
|
||
reIndex(a, nil, array("A": "A1", "D": nil));
|
||
return a;
|
||
// 说明,第2个参数为nil表示对第一维的下标不进行变动,因此我们修改列"A"为"A1",并删除"D"列。
|
||
// 利用Reindex做列的交换
|
||
a := array(1, 2, 3, 4, 5);
|
||
reIndex(a, array(0: 4, 4: 0));
|
||
return a;
|
||
// 结果为array(5,2,3,4,1);
|
||
```
|
||
|
||
## `fieldNamesOfStrSubscript(t)`
|
||
|
||
字符串下标数组的字段名称。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ---- |
|
||
| `t` | array | 整数 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
s := `array('a': (1, 2, 3, 4, 5), 'b': (2, 3, 4, 5, 6), 'c': (3, 4, 5, 6, 7), 'd': (4, 5, 6, 7, 8));
|
||
return fieldNamesOfStrSubscript(s);
|
||
// 返回:
|
||
```
|
||
|
||
## `fieldCountOfStrSubscript(t)`
|
||
|
||
字符串下标数组的字段个数。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ---------- |
|
||
| `t` | array | 数据表类型 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
s := `array('a': (1, 2, 3, 4, 5), 'b': (2, 3, 4, 5, 6), 'c': (3, 4, 5, 6, 7), 'd': (4, 5, 6, 7, 8));
|
||
return fieldCountOfStrSubscript(s);
|
||
// 返回:4
|
||
```
|
||
|
||
## `argmax(x)`
|
||
|
||
1、返回一维数组中最大值所在下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ---------------- | ------------ |
|
||
| `x` | array,tablearray | 一维数字数组 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
x := array(9, 8, 10);
|
||
return argmax(x); // 2
|
||
```
|
||
|
||
## `argmin(x)`
|
||
|
||
1、返回一维数组中最小值所在下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ---------------- | ------------ |
|
||
| `x` | array,tablearray | 一维数字数组 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
x := array(3, 1, 9, 2);
|
||
return argmin(x); // 1
|
||
```
|
||
|
||
## `sortTableByFieldExt(t, sort_field)`
|
||
|
||
将数组t依据字段SortField排序。把大于0的按照从小到大排序,把小于0的按照绝对值从小到大排序,然后,把两个结果合并。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ------ | ---------------- |
|
||
| `t` | array | 数据表类型,数组 |
|
||
| `sort_field` | string | 字符串,排序字段 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
s := `array('a': (1, 2, 3, 4, 5), 'b': (-2, -3, -4, 5, 6), 'c': (3, 4, 5, 6, 7), 'd': (4, 5, 6, 7, 8));
|
||
return sortTableByFieldExt(s, 'b');
|
||
// 返回:
|
||
```
|
||
|
||
## `rankValue(t, fields)`
|
||
|
||
按照指定字段求Rank,返回的数据,保存在传递过来的数据t中。返回按Fields列排序的结果,
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ------------------ |
|
||
| `t` | array | 数据表类型,数据表 |
|
||
| `fields` | string | 字符串,排序的列 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 取上证50的成分股,获得涨幅之后,对涨幅进行排名
|
||
stock_arr := getBkByDate('SH000016', 20190201T);
|
||
s := select ['StockID'] as '代码',
|
||
["StockName"] as "名称",
|
||
['price'] as '收盘',
|
||
stockZf(['date'], ['date']) as '涨幅(%)'
|
||
from markettable datekey 20190201T to 20190201T of stockArr end;
|
||
rankValue(s, '涨幅(%)');
|
||
return s;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:getBkByDate compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `argsort(value, sortdir)`
|
||
|
||
返回可以用于排序的一维数组下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------- | --------------------------------------- |
|
||
| `value` | array | 一维数字数组,数组 |
|
||
| `sortdir` | integer | 整数,排序方向(1:正序【默认】;0:逆序) |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
value := array(4, 8, 2, 3, 9);
|
||
return argsort(value); // 返回:array(2,3,0,1,4)
|
||
```
|
||
|
||
## `rankIt(t, f_n, sort_order)`
|
||
|
||
按指定字段的值排名;SortOrder:0 降序排名;SortOrder:1升序排名
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ------- | ------------------------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_n` | string | 字段名 |
|
||
| `sort_order` | integer | 排名方向,0 降序排名, 1升序排名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33));
|
||
rankIt(t2, 'c', 1);
|
||
return t2;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:rankIt compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `rankIt2(t, f_n, of_n, sort_order)`
|
||
|
||
按指定字段的值排名,SortOrder:0 降序排名;SortOrder:1 升序排名,排名列的字段为:OfN
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ------- | ------------------------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_n` | string | 指定字段,字符串 |
|
||
| `of_n` | string | 排名列字段名,字符串 |
|
||
| `sort_order` | integer | 排名方向:0 降序排名,1 升序排名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33));
|
||
rankIt2(t2, 'c', '名次', 1);
|
||
return t2;
|
||
// 输出:
|
||
// 示例包含说明文字,未作为可执行片段运行。
|
||
```
|
||
|
||
## `rpsIt(t, f_n, sort_order)`
|
||
|
||
按指定字段的值排名,获得其排名的百分位,排序百分位放在列 FN+"\_RPS"中;
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ------- | ------------------------------- |
|
||
| `t` | array | 数组,数据表 |
|
||
| `f_n` | string | 字符串/数字,字段名 |
|
||
| `sort_order` | integer | 排名方向,0 降序排名, 1升序排名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 获得沪深300的成分股,并计算EndT的涨幅,对涨幅排序后返回其排序百分比。
|
||
endt := intToDate(20140401);
|
||
setSysParam(PN_Date(), end_t);
|
||
stock_arr := getBkByDate('SH000300', end_t);
|
||
r := array();
|
||
n := 0;
|
||
for n_i := 0 to length(stock_arr)-1 do
|
||
begin
|
||
stock_id := stock_arr[n_i];
|
||
setSysParam(pn_stock(), stock_id);
|
||
if not isTradeDay(end_t) then continue;
|
||
r[n]['StockID'] := stock_id;
|
||
r[n]['StockName'] := stockName(stock_id);
|
||
r[n]['StockZF'] := stockZf3();
|
||
n++;
|
||
end;
|
||
return rpsIt(r, 'StockZF', 1);
|
||
// 部分结果截图:
|
||
```
|
||
|
||
## `deleteNilValueByField(t, fields)`
|
||
|
||
删除指定字段fields数据为NIL的记录。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | --------------------------------------------------------------- |
|
||
| `t` | array | 数据表类型,数据 |
|
||
| `fields` | string | 字符串,字段名称,多个字段用分号(;)连接,例:"Field1;Field2" |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
tdata := array(array('time': 1, 'price': 7.78), array('time': 2));
|
||
deleteNilValueByField(tdata, 'price');
|
||
return tdata;
|
||
// 返回:
|
||
```
|
||
|
||
## `inserttablebyrno(t, index, rdata)`
|
||
|
||
向表格指定位置插入行,天软表格行下标从0开始
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------- | ------------------------------------------------------------ |
|
||
| `t` | array | Array,数组,支持一维,二维数组,只支持下标为自增长的序列数组 |
|
||
| `index` | integer | Integer,插入行的起始下标,下标位置从0开始 |
|
||
| `rdata` | any | Any,插入的数据,支持一个值、一维表及二维表 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例1:
|
||
|
||
```tsl
|
||
// 向一维数组指定位置插入一个字符串’aaa’
|
||
t := 43456->43460;
|
||
index := 2;
|
||
r_data := 'aaa';
|
||
return inserttablebyrno(t, index, r_data);
|
||
// 结果:array(43456,43457,"aaa",43458,43459,43460)
|
||
```
|
||
|
||
范例2:
|
||
|
||
```tsl
|
||
// 向一维数组第3行插入多行的数据
|
||
t := 44000->44004;
|
||
index := 3;
|
||
r_data := array('a', 'b', 'c');
|
||
return inserttablebyrno(t, index, r_data);
|
||
// 结果:
|
||
array(44000, 44001, 44002, "a", "b", "c", 44003, 44004)
|
||
```
|
||
|
||
范例3:
|
||
|
||
```tsl
|
||
// 向二维数组第3行插入多行的数据
|
||
t := array(('a': 10, 'b': 'i', 'c': dateToStr(20200319T)),
|
||
('a': 50, 'b': 'i', 'c': dateToStr(20200318T)),
|
||
('a': 60, 'b': 'i', 'c': dateToStr(20200317T)),
|
||
('a': 40, 'b': 'o', 'c': dateToStr(20200316T)),
|
||
('a': 20, 'b': 'o', 'c': dateToStr(20200313T)));
|
||
index := 3;
|
||
r_data := array(('c': 0, 'b': 44000, 'a': '2020-03-20'));
|
||
return inserttablebyrno(t, index, r_data);
|
||
// 输出:
|
||
// Execute script error at Line:9
|
||
// function:__main__:line 9:instruction:usercall: function:inserttablebyrno compile error or not found
|
||
// function:__main__:line 9:instruction:usercall: function execute error
|
||
```
|
||
|
||
范例4:
|
||
|
||
```tsl
|
||
// 向二维数组第1行插入多行的数据
|
||
t := array(('a': 10, 'b': 'i', 'c': dateToStr(20200319T)),
|
||
('a': 50, 'b': 'i', 'c': dateToStr(20200318T)),
|
||
('a': 60, 'b': 'i', 'c': dateToStr(20200317T)),
|
||
('a': 40, 'b': 'o', 'c': dateToStr(20200316T)),
|
||
('a': 20, 'b': 'o', 'c': dateToStr(20200313T)));
|
||
index := 1;
|
||
r_data := array(('c': '2020', 'b': 'AAA', 'a': 44456),
|
||
('c': '2020', 'b': 'BBB', 'a': 44566));
|
||
return inserttablebyrno(t, index, r_data);
|
||
// 输出:
|
||
// Execute script error at Line:10
|
||
// function:__main__:line 10:instruction:usercall: function:inserttablebyrno compile error or not found
|
||
// function:__main__:line 10:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `arrayextend(a, ind, v)`
|
||
|
||
数组-指定位置插入子集
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | --------------- | ---------------------------- |
|
||
| `a` | array of number | Array of number,一维数字数组 |
|
||
| `ind` | integer | Integer,插入的起始位置 |
|
||
| `v` | array of number | Array of number,插入的子数组 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
a := letters(1->6);
|
||
return arrayextend(a, 2, array('d', 'e'));
|
||
// 返回:array("A", "B", "d", "e", "C", "D", "E", "F")
|
||
```
|
||
|
||
## `arrayinsert(a, ind, v)`
|
||
|
||
数组-指定位置插入值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | --------------- | ---------------------------- |
|
||
| `a` | array of number | Array of number,一维数字数组 |
|
||
| `ind` | integer | Integer,插入位置 |
|
||
| `v` | any | Any,元素值 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
a := letters(1->6);
|
||
return arrayinsert(a, 2, 3);
|
||
// 返回:array("A", "B", 3, "C", "D", "E", "F")
|
||
```
|
||
|
||
## `frameinsert(data, loc, fname, v)`
|
||
|
||
数据表-指定位置插入列
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------- | ----------------------- |
|
||
| `data` | table | Table,二维数据表,源数据 |
|
||
| `loc` | integer | Integer,插入位置 |
|
||
| `fname` | string | String,插入索引命名 |
|
||
| `v` | integer | Integer,插入值 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
data := load_dataset_iris();
|
||
return frameinsert(data, 1, '新列', 0);
|
||
```
|
||
|
||
## `searchsorted(v, x)`
|
||
|
||
有序列表插入指定值的位置,原数组必须为有序表且元素应可比较。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | -------------- | ----------------- |
|
||
| `v` | array | 一维数组 有序数组 |
|
||
| `x` | string \| real | 插入的值 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 数字插入
|
||
v := array(1, 2, 3, 4, 5, 6);
|
||
return searchsorted(v, 3.5); // 返回:3
|
||
// 字符串插入
|
||
v := array("SH600001", "SH600004", "SH600050", "SH600305");
|
||
return searchsorted(v, "SH600049"); // 返回:2
|
||
```
|
||
|
||
## `argconfirst(a, v, _type)`
|
||
|
||
第一次满足条件的位置, 原数组必须为有序表且元素应可比较。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------------------- | -------- |
|
||
| `a` | array | 有序数组 |
|
||
| `v` | string\|real\|array | 对比值 |
|
||
| `_type` | integer | 对比条件 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 实数对比
|
||
a := 0->9;
|
||
return argconfirst(a, 3.5, 1); // 返回:4
|
||
// 数组对比
|
||
a := array(("a", "A"), ("b", "B"), ("c", "C"), ("d", "D"));
|
||
v := array("b", "B");
|
||
return argconfirst(a, v, 6); // 返回:1
|
||
```
|
||
|
||
## `stockAmount(t, date, yes_value)`
|
||
|
||
从数据表t中获取符合ChangeField大于或等于Date的数据。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------- | ---------------------------------------------- |
|
||
| `t` | array | 数据表类型,需要比较获取的数据表 |
|
||
| `date` | integer | 实数,或者日期 |
|
||
| `yes_value` | integer | 布尔值,决定返回Date当天的数据还是之前的数据; |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 平安银行2011年6月30日流通A股发生变动
|
||
setSysParam(PN_Stock(), 'SZ000001');
|
||
t := infoArray(16); // 股票.股本结构表
|
||
r1 := stockAmount(t, 20110630, 0, '变动日', '流通A股'); // Date当天
|
||
r2 := stockAmount(t, 20110630, 1, '变动日', '流通A股'); // Date之前
|
||
return array(r1, r2);
|
||
// 结果:array(3105358672.0,3105358511.0)
|
||
```
|
||
|
||
## `seperateTable(t, sep_field, sep_count)`
|
||
|
||
把表格t分割为SepCount个表格。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------- | -------------------- |
|
||
| `t` | array | 数据表类型,原始数组 |
|
||
| `sep_field` | string | 字符串,排序字段 |
|
||
| `sep_count` | integer | 整数,分割数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := `array('a': (1, 2, 3, 4), 'b': (2, 3, 4, 5), 'c': (3, 4, 5, 6), 'd': (4, 5, 6, 7), 'e': (5, 6, 7, 8), 'f': (7, 8, 9, 10));
|
||
return seperateTable(t, 'a', 2);
|
||
// 返回:
|
||
```
|
||
|
||
## `unitary(t, key_fields, _type, f_value)`
|
||
|
||
归一处理。对数组t指定列KeyFields进行归一处理,归一方式由Type决定。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ---------------- | ---- |
|
||
| `t` | array,tablearray | |
|
||
| `key_fields` | string | |
|
||
| `_type` | integer | |
|
||
| `f_value` | integer | |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := `array('a': (1, 2, 3, 4), 'b': (2, 3, 4, 5), 'c': (3, 4, 5, 6), 'd': (4, 5, 6, 7), 'e': (5, 6, 7, 8), 'f': (7, 8, 9, 10));
|
||
unitary(t, 'b', 0, 10);
|
||
return t;
|
||
// 返回:
|
||
```
|
||
|
||
## `tableVectorizeArray(t, s, opt, is_func)`
|
||
|
||
数据表与一维数据表的矢量化运算。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ----------- | -------------------------------------- |
|
||
| `t` | array | 数据表 |
|
||
| `s` | array\|real | 一维数组 或实数, 运算标量 |
|
||
| `opt` | string | 字符串,操作运算符,默认"-",表逐行减法 |
|
||
| `is_func` | bool | 布尔,opt是否是函数,默认假 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := ones(10, 3);
|
||
s := array(1, 2, 3);
|
||
return tableVectorizeArray(t, s, '-');
|
||
// 输出:
|
||
// Execute script error at Line:3
|
||
// function:__main__:line 3:instruction:usercall: function:tableVectorizeArray compile error or not found
|
||
// function:__main__:line 3:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `reverse(arr)`
|
||
|
||
数组倒置反向。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ----- | ---- |
|
||
| `arr` | array | 数组 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 倒置数组
|
||
setSysParam(pn_stock(), "SZ000002");
|
||
setSysParam(pn_date(), 20210601t);
|
||
arr := nDay(10, "date", dateToStr(sp_time()), "close", close());
|
||
return reverse(arr);
|
||
// 输出:
|
||
// Execute script error at Line:5
|
||
// function:__main__:line 5:instruction:usercall: function:reverse compile error or not found
|
||
// function:__main__:line 5:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `descartesJoin(v1, v2, v_n)`
|
||
|
||
数组笛卡尔积连接。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ---- | --------------------------------- |
|
||
| `v1` | | 任意类型,支持不定个数参数,数值1 |
|
||
| `v2` | | 任意类型,数值2 |
|
||
| `v_n` | | 任意类型,数值3 |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
return descartesJoin(1->3, 21->22, 3);
|
||
// 输出:
|
||
// Execute script error at Line:1
|
||
// function:__main__:line 1:instruction:->: function:descartesJoin compile error or not found
|
||
// function:__main__:line 1:instruction:->: function execute error
|
||
```
|
||
|
||
## `abnormalData(y, flag, ystore)`
|
||
|
||
数组中出现奇异值的处理。其中y为数据表,Flag为处理方法,Ystore为选择中位数和3倍标准差法返回被处理数据的数据。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ------------------------------------------------------------ |
|
||
| `y` | array | 一维数字数组 |
|
||
| `flag` | string | 用户自定义,奇异值处理方法 |
|
||
| `ystore` | array | 数据表类型,存放修改的数据,包括修改的行、原数值、处理后的值 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
范例01:返回奇异值的位置及处理后的结果。
|
||
|
||
```tsl
|
||
t := array(1, 100, 101, 102, 103, 1000);
|
||
abnormalData(t, "median", r);
|
||
return r;
|
||
// 返回:
|
||
// 其中,0和5为修改的行,1和1000是对应的原值,93.7和109.3是修改后的值
|
||
```
|
||
|
||
范例02:对源数据列增加一列奇异值处理后的结果
|
||
|
||
```tsl
|
||
col := 'SH000001';
|
||
setSysParam(pn_stock(), col);
|
||
setSysParam(pn_date(), 20240930T);
|
||
setSysParam(pn_cycle(), cy_day());
|
||
days := 100;
|
||
// SH000001在20240930最近100天的行情数据中设置三个奇异值
|
||
t := nDay(days, '日期', dateToStr(sp_time()), col, close());
|
||
t[29, col] := 1500;
|
||
t[59, col] := 4500;
|
||
t[79, col] := 6000;
|
||
// 找到数组指定列奇异值,以中位数法为例
|
||
tyc := abnormalData(t[: , col], "median", abn);
|
||
t[: , col$"_奇异值处理"] := tyc;
|
||
return t;
|
||
// 输出:增加列"SH000001_奇异值处理"
|
||
```
|
||
|
||
## `zValue(t, column_name)`
|
||
|
||
按照指定字段求Z值。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------- | ------ | ------------------------ |
|
||
| `t` | array | 数据表类型,数据表 |
|
||
| `column_name` | string | 字符串,要计算Rank的字段 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
stock_arr := getBkByDate('SH000016', 20190201T);
|
||
s := select ['StockID'] as '代码',
|
||
["StockName"] as "名称",
|
||
['price'] as '收盘',
|
||
stockZf(['date'], ['date']) as '涨幅(%)'
|
||
from markettable datekey 20190201T to 20190201T of stockArr end;
|
||
zValue(s, '涨幅(%)');
|
||
return s
|
||
// 返回:
|
||
```
|
||
|
||
## `rpsValue(t, column_name)`
|
||
|
||
按照指定字段求RPS。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------- | ------ | ----------------------- |
|
||
| `t` | array | 数据表类型,数据表 |
|
||
| `column_name` | string | 字符串,要计算RPS的字段 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
stock_arr := getBkByDate('SH000016', 20190201T);
|
||
s := select ['StockID'] as '代码',
|
||
["StockName"] as "名称",
|
||
['price'] as '收盘',
|
||
stockZf(['date'], ['date']) as '涨幅(%)'
|
||
from markettable datekey 20190201T to 20190201T of stockArr end;
|
||
rpsValue(s, '涨幅(%)');
|
||
return s;
|
||
// 返回:
|
||
```
|
||
|
||
## `webFormatToRung(a)`
|
||
|
||
将数组Nan/Nil/±Inf替换为"-"
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | -------------------------------------------- |
|
||
| `a` | array | 数组,待替换数组,支持多维数组,高维嵌套数组 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
a := array('a': ('b': ('c': (nil, nan, 3), 'd': 2), 'e': nan));
|
||
return webFormatToRung(a); // array("a":("b":("c":("-","-",3),"d":2),"e":"-"))
|
||
```
|
||
|
||
## `factorize(value, ifsort, nan_fill_value, uniques)`
|
||
|
||
分类变量数值映射,将一个一维分类变量数组映射为给分类变量递增编号后的数值数组
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------------- | ----- | ---------------------------------- |
|
||
| `value` | array | 数组,一维数组 |
|
||
| `ifsort` | bool | 布尔型,是否排序,默认不排序 |
|
||
| `nan_fill_value` | any | 数字/字符串,填充nan的值,默认为-1 |
|
||
| `uniques` | array | 数组,输出,各值对应的原值 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
value := Array('a', 'd', 'c', 'a', 'b');
|
||
labels := factorize(value, true, -1, uniques);
|
||
echo uniques; // array("a","b","c","d")
|
||
return labels; // array(0,3,2,0,1);
|
||
```
|
||
|
||
## `sparseMatFill(a, fillv)`
|
||
|
||
稀疏数据表填充,直接在A矩阵上更改
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ---------------- | -------------------- |
|
||
| `a` | array,tablearray | 数据表类型,稀疏矩阵 |
|
||
| `fillv` | real | 实数,给定的填充值 |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
a := array((3: 4), ('A': 2));
|
||
sparseMatFill(a, -1);
|
||
return a; // array((3:4,"A":-1),(3:-1,"A":2))
|
||
```
|
||
|
||
## `elementWhere(con, x, y)`
|
||
|
||
根据布尔数组con,为True时从X中,为False时从Y中,取对应位置元素的值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ---------------- | ---- |
|
||
| `con` | array,tablearray | |
|
||
| `x` | array,tablearray | |
|
||
| `y` | array,tablearray | |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
con := array(1, 0, 1, 1, 1, 0);
|
||
x := array(1, 2, 3, 4, 5, 6);
|
||
y := array(11, 12, 13, 14, 15, 16);
|
||
return elementWhere(con, x, y); // array(1,12,3,4,5,16)
|
||
```
|
||
|
||
## `arrayAddGap(t, key, v, m)`
|
||
|
||
数组添加分割线,只支持字符串下标
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ------- | ------------------------------------------- |
|
||
| `t` | array | 数组,待添加数组,直接在原数组更改 |
|
||
| `key` | string | 字符串,间隔名,默认无 |
|
||
| `v` | string | 字符串,间隔串,默认为 DupeString('-',m\*2) |
|
||
| `m` | integer | 整型,间隔串的长度设置,默认 5 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
a := array('alpha(%)': 3);
|
||
arrayAddGap(a, '风险');
|
||
a['beta'] := 3;
|
||
return a; // array("alpha(%)":3,"-----风险-----":"----------","beta":3)
|
||
```
|
||
|
||
## `groupPercentrankIt(t, g_name, v_name)`
|
||
|
||
计算分组百分位,对数据表t按[GName]分组后,对每组的[Vname_]计算百分位
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ------------------ |
|
||
| `t` | array | 数组,待计算的数组 |
|
||
| `g_name` | string | 字符串,分组字段名 |
|
||
| `v_name` | string | 字符串,转换字段名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array(("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
return groupPercentrankIt(t, 'G', 'V1'); // array(0.0,0.0,0.5,0.5,1.0,1.0)
|
||
```
|
||
|
||
## `groupRankIt(t, g_name, v_name, sort_order)`
|
||
|
||
计算分组排名,对数据表t按[GName]分组后,对每组的[Vname_]计算排名
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------ | ------ | ------------------ |
|
||
| `t` | array | 数组,待计算的数组 |
|
||
| `g_name` | string | 字符串,分组字段名 |
|
||
| `v_name` | string | 字符串,转换字段名 |
|
||
| `sort_order` | bool | 布尔型,排名方向 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array(
|
||
("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
return groupRankIt(t, 'G', 'V1'); // array(1,1,2,2,3,3)
|
||
```
|
||
|
||
## `groupTransformByFunc(t, g_name, v_name, fp)`
|
||
|
||
计算分组排名,对数据表t按[GName]分组后,对每组的[Vname_]根据给定函数进行分组转换操作
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | --------------------------------------------------------------------------------------------------- |
|
||
| `t` | array | 数组,待计算的数组 |
|
||
| `g_name` | string | 字符串,分组字段名 |
|
||
| `v_name` | string | 字符串或数组,转换字段名 |
|
||
| `fp` | string | 字符串(函数名)或函数指针,转换函数必须两个参数,分别表示当前的聚合字段与排名字段,以分组排名为例: |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array(("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
fp := function (v, g);
|
||
begin
|
||
return rankof([v], [v]);
|
||
end
|
||
return groupTransformByFunc(t, 'G', 'V1', fp); // array(3,3,2,2,1,1)
|
||
```
|
||
|
||
## `frameGetSubByReg(data, reg)`
|
||
|
||
通过正则表达式匹配获取数据框子集
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ------ | -------------------------- |
|
||
| `data` | array | 数组,待匹配的数组 |
|
||
| `reg` | string | 字符串,间隔名,正则匹配串 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array((13: 1, "V1": 1, "V2": 11, 12: 21, 'R1w': 1),
|
||
(13: 0, "V1": 2, "V2": 12, 12: 22, 'R1w': 1),
|
||
(13: 1, "V1": 3, "V2": 13, 12: 23, 'R1w': 1),
|
||
(13: 0, "V1": 4, "V2": 14, 12: 24, 'R1w': 1),
|
||
(13: 1, "V1": 5, "V2": 15, 12: 25, 'R1w': 1),
|
||
(13: 0, "V1": 6, "V2": 16, 12: 26, 'R1w': 1));
|
||
return frameGetSubByReg(t, '1');
|
||
// 结果:
|
||
array(
|
||
(21, 1, "V1": 1, "R1w": 1),
|
||
(22, 0, "V1": 2, "R1w": 1),
|
||
(23, 1, "V1": 3, "R1w": 1),
|
||
(24, 0, "V1": 4, "R1w": 1),
|
||
(25, 1, "V1": 5, "R1w": 1),
|
||
(26, 0, "V1": 6, "R1w": 1))
|
||
```
|
||
|
||
## `histogram(t, bins, format)`
|
||
|
||
统计data的频数分布表
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ---------------- | --------------------------------------- |
|
||
| `t` | array,tablearray | 数字数组,待计算的数组 |
|
||
| `bins` | array,tablearray | 数组,表分组间隔 |
|
||
| `format` | string | 字符串,展示区间的格式串,见FormatFloat |
|
||
|
||
返回:array,tablearray
|
||
|
||
### 示例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
return histogram(Randn(0, 1, 1000), array(-3, 0.5)->3, '0.00');
|
||
// 输出:
|
||
// Execute script error at Line:1
|
||
// function:__main__:line 1:instruction:usercall: function:Randn compile error or not found
|
||
// function:__main__:line 1:instruction:usercall: function execute error
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
data := randn(0, 1, 1000, array('a', 'b'));
|
||
return histogram(data, array(-3, 0.5)->3, '0.00');
|
||
// 输出:
|
||
// Execute script error at Line:1
|
||
// function:__main__:line 1:instruction:array: function:randn compile error or not found
|
||
// function:__main__:line 1:instruction:array: function execute error
|
||
```
|
||
|
||
## `framemerge(left, right, ons, how)`
|
||
|
||
数据表-联结
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------ | --------------------------- |
|
||
| `left` | table | Table,左表 |
|
||
| `right` | table | Table,右表 |
|
||
| `ons` | string | String,联结字段,可以为数组 |
|
||
| `how` | string | String,: 联结类型 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例1:
|
||
|
||
```tsl
|
||
left := `array('a': 3->5, 'b': rand(3));
|
||
right := `array('a': 1->4, 'b': rand(4), 'c': rand(4) * 10);
|
||
return framemerge(left, right, 'a');
|
||
```
|
||
|
||
范例2
|
||
|
||
```tsl
|
||
// 多字段merge
|
||
left := `array('a': 3->5, 'b': rand(3));
|
||
left[: , 'c'] := left[: , 'a'];
|
||
right := `array('a': 1->4, 'b': rand(4), 'c': rand(4) * 10);
|
||
right[: , 'c'] := right[: , 'a'];
|
||
names := array('a', 'c');
|
||
return framemerge(left, right, name, 'lfet', nil, true);
|
||
```
|
||
|
||
范例3
|
||
|
||
```tsl
|
||
// 只更名right
|
||
left := `array('a': 3->5, 'b': rand(3));
|
||
right := `array('a': 1->4, 'b': rand(4), 'c': rand(4) * 10);
|
||
return framemerge(left, right, 'a', 'full', array(nil, '_x'));
|
||
```
|
||
|
||
## `frameqcut(data, q)`
|
||
|
||
数据表-按频率分组(等频分组)
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ------- | -------------------------------------------- |
|
||
| `data` | table | Table,数据表或一维数字数组,数据表时,表示对 |
|
||
| `q` | integer | Integer,分组数,等分q组,正整数,默认q=5 |
|
||
|
||
返回:array
|
||
|
||
## `frameupdate(left, right, ons, _type, _type)`
|
||
|
||
数据表-更新
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------- | -------------------------------------------- |
|
||
| `left` | table | Table,待更新数据,直接更改 |
|
||
| `right` | table | Table,右表 |
|
||
| `ons` | string | String,键字段,默认为nil,表以下标进行联结。 |
|
||
| `_type` | integer | Integer,缺失类型,详见MF_isMissValue |
|
||
| `_type` | integer | 为以下数值的组合(以下数值的\_XOR或者相加) |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
left := `array('a': 3->5, 'b': rand(3));
|
||
right := `array('a': 1->4, 'b': rand(4), 'c': rand(4) * 10);
|
||
return frameupdate(left, right, 'a');
|
||
```
|
||
|
||
## `groupZscoreIt(t, g_name, v_name)`
|
||
|
||
1.计算分组标准化,对数据表t按[GName]分组后,对每组的[Vname_]进行标准化(原值-分组平均)/分组标准差
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | --------------------------------------------------------------------------------------------------------------------------- |
|
||
| `t` | array | 数组,待计算的数组 |
|
||
| `g_name` | string | 字符串,分组字段名 |
|
||
| `v_name` | string | 字符串,转换字段名。如果Vname*为nil则表示除GName之外的所有字段,如果Vname*为一个数组,则表示需要计算的字段组返回:二维数组, |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array(
|
||
("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
return groupZscoreIt(t, 'G', 'V1');? // array(-1.0,-1.0,0.0,0.0,1.0,1.0)
|
||
```
|
||
|
||
## `framecut(a, bins, option, o_lables)`
|
||
|
||
从小到大分段分组,最小的为第0组
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------- | ------- | --------------------------------------------------------------------------- |
|
||
| `a` | array | 数据表或一维数字数组,数据表时,表示对每列分别操作 |
|
||
| `bins` | array | 一维数字数组,分段节点,例如array(0,1)将数组a分为[-inf,0)[0,1)[1,inf)三段, |
|
||
| `option` | integer | 整型,区间开/闭,默认为0 |
|
||
| `o_lables` | integer | 数组,输出分组区间说明 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例1:
|
||
|
||
```tsl
|
||
a := array(0, 59, 60, 70, 80, 99, 100);
|
||
bins := array(60, 80);
|
||
return framecut(a, bins, 0);
|
||
// array(0,0,1,1,2,2,2)
|
||
```
|
||
|
||
范例2
|
||
|
||
```tsl
|
||
a := array(0, 59, 60, 70, 80, 99, 100);
|
||
bins := 5;
|
||
return framecut(a, bins, 0);
|
||
// array(0,2,3,3,4,4,4)
|
||
```
|
||
|
||
## `frameMelt(t, id_names, value_names, variable_sname, value_sname)`
|
||
|
||
二维表——>立体表
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------------- | ------ | ------------------------------------------------------------------- |
|
||
| `t` | array | 二维字符串数组,数据表 |
|
||
| `id_names` | array | 一维字符串数组,键字段 |
|
||
| `value_names` | array | 一维字符串数组,值字段。为nil或者空时,表每行除开键字段外都是值字段 |
|
||
| `variable_sname` | string | 字符串,变量展示名 |
|
||
| `value_sname` | string | 字符串,值展示名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t := array(
|
||
('截止日': 20210101, 'SH000300': 1, 'SH000301': 3),
|
||
('截止日': 20210102, 'SH000300': 9, 'SH000301': 2),
|
||
);
|
||
id_names := array('截止日');
|
||
return frameMelt(t, '截止日', nil, '代码', '得分');
|
||
// 输出:
|
||
// 示例包含说明文字,未作为可执行片段运行。
|
||
```
|
||
|
||
## `groupDemeanIt(t, g_name, v_name)`
|
||
|
||
1、分组去均值,对数据表t按[GName]分组后,对每组的[VName]去均值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ------------------------ |
|
||
| `t` | dbdata | 数据表,待分组去均值数据 |
|
||
| `g_name` | string | 字符串,t的分组字段名 |
|
||
| `v_name` | string | 字符串,去均值字段名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例1:
|
||
|
||
```tsl
|
||
t := array(
|
||
("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
return groupDemeanIt(t, 'G', 'V1'); // array(-2.0,-2.0,0.0,0.0,2.0,2.0)
|
||
```
|
||
|
||
范例2
|
||
|
||
```tsl
|
||
t := array(
|
||
("G": 1, "V1": 1, "V2": 11, "V3": 21),
|
||
("G": 0, "V1": 2, "V2": 12, "V3": 22),
|
||
("G": 1, "V1": 3, "V2": 13, "V3": 23),
|
||
("G": 0, "V1": 4, "V2": 14, "V3": 24),
|
||
("G": 1, "V1": 5, "V2": 15, "V3": 25),
|
||
("G": 0, "V1": 6, "V2": 16, "V3": 26));
|
||
return groupDemeanIt(t, 'G', array('V1', 'V2'));
|
||
// 输出:
|
||
// Execute script error at Line:8
|
||
// function:__main__:line 8:instruction:array: function:groupDemeanIt compile error or not found
|
||
// function:__main__:line 8:instruction:array: function execute error
|
||
```
|
||
|
||
## `arrDropDuplicate(data)`
|
||
|
||
数组去重(包含NAN)。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ----- | -------------------- |
|
||
| `data` | array | 数据表类型。数据表。 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
data := array(("A": 1, "B": nan), ("A": 1, "B": 2), ("A": 1, "B": nan), ("A": 1, "B": 2));
|
||
return arrDropDuplicate(data);
|
||
// 结果:array(("A":1,"B":NAN),("A":1,"B":2))
|
||
```
|
||
|
||
## `getSubTableByField(t)`
|
||
|
||
获取表t中的Fields 列的数据。该函数功能可以用子矩阵的方式实现:t[:,array(fn1,fn2...)]
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ------------------ |
|
||
| `t` | array | 数据表类型,数据表 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
setSysParam(pn_stock(), 'SZ000001');
|
||
r := nDay(10, 'time', dateToStr(sp_time()), 'close', close(), 'open', open(), 'high', high());
|
||
return getSubTableByField(r, 'time;close');
|
||
// 功能相当于使用子矩阵取数
|
||
return r[: , array('time', 'close')];
|
||
// 返回:
|
||
```
|
||
|
||
## `arraygetdefault(r, k, v)`
|
||
|
||
带默认值的数组取值,取指定下标的值,若存在则返回,否则返回设定的默认值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | --------------- | ---------------- |
|
||
| `r` | array of string | Array of string, |
|
||
| `k` | string | String,下标 |
|
||
| `v` | string | String,默认值 |
|
||
|
||
返回:any
|
||
|
||
## `arraysetdefault(r, k, v)`
|
||
|
||
带默认值的数组赋值(字段未使用则赋值)
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | --------------- | ---------------- |
|
||
| `r` | array of string | Array of string, |
|
||
| `k` | string | String,下标 |
|
||
| `v` | string | String,默认值 |
|
||
|
||
返回:bool
|
||
|
||
## `arraysetdefault2(r, k, v)`
|
||
|
||
带默认值的数组赋值(值为nil则赋值)
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | --------------- | ---------------- |
|
||
| `r` | array of string | Array of string, |
|
||
| `k` | string | String,下标 |
|
||
| `v` | string | String,默认值 |
|
||
|
||
返回:bool
|
||
|
||
## `randomchoice(avalues, size, replace)`
|
||
|
||
随机抽样
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | --------------- | ---------------------------------------- |
|
||
| `avalues` | array of string | Array of string,一维字符串数组,或正整数 |
|
||
| `size` | integer | Integer, |
|
||
| `replace` | bool | Bool,是否可放回,默认为真可放回 |
|
||
|
||
返回:any
|
||
|
||
## `filterIntersectionPart(t1, t2, f_name, method)`
|
||
|
||
求两个数组在指定列名上的差集、交集、并集
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ----------------------------------------------- |
|
||
| `t1` | array | 数据表 |
|
||
| `t2` | array | 数据表 |
|
||
| `f_name` | string | 指定列名字符串 |
|
||
| `method` | string | 方法,’IN’交集,’NOT IN’差集,’ALL’并集,字符串 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 10, 'c': 13), ('a': 2, 'b': 17, 'c': 13));
|
||
t2 := array(('a': 2, 'b': 22, 'c': 23), ('a': 1, 'b': 14, 'c': 13), ('a': 3, 'b': 12, 'c': 13));
|
||
return filterIntersectionPart(t1, t2, 'a', 'IN'); // t1 与t2的交集
|
||
// 输出:
|
||
// 示例包含说明文字,未作为可执行片段运行。
|
||
```
|
||
|
||
## `filterIntersectionPart2(t1, t2, method)`
|
||
|
||
求两个数组的差集、交集、并集。只适用一维数组。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ----------------------------------------------- |
|
||
| `t1` | array | 一维数据表 |
|
||
| `t2` | array | 一维数据表 |
|
||
| `method` | string | 方法,’IN’交集,’NOT IN’差集,’ALL’并集,字符串 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(1, 2, 3, 4);
|
||
t2 := array(3, 4, 5, 6);
|
||
return filterIntersectionPart2(t1, t2, 'IN'); // t1 与t2的交集
|
||
// 输出:
|
||
// 示例包含说明文字,未作为可执行片段运行。
|
||
```
|
||
|
||
## `averageByColumn(t, f_name)`
|
||
|
||
求指定列的平均值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | -------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 4, 'c': 9), ('a': 7, 'b': 8, 'c': 5));
|
||
return averageByColumn(t1, 'b');
|
||
// 结果:6
|
||
```
|
||
|
||
## `harMeanByColumn(t, f_name)`
|
||
|
||
指定列的调和平均值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | -------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 4, 'c': 9), ('a': 7, 'b': 5, 'c': 5));
|
||
return harMeanByColumn(t1, 'b');
|
||
// 结果:4.44
|
||
```
|
||
|
||
## `geoMeanByColumn(t, f_name)`
|
||
|
||
指定列的几何平均值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | -------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 4, 'c': 9), ('a': 7, 'b': 5, 'c': 5));
|
||
return geoMeanByColumn(t1, 'b');
|
||
// 结果:4.47
|
||
```
|
||
|
||
## `devsqByColumn(t, f_name)`
|
||
|
||
指定列平均值偏差的平方和
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | -------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 4, 'c': 9), ('a': 7, 'b': 5, 'c': 5));
|
||
return devsqByColumn(t1, 'b');
|
||
// 结果:0.5
|
||
```
|
||
|
||
## `kurtByColumn(t, f_name)`
|
||
|
||
指定列的峰度
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | -------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return kurtByColumn(t2, 'c');
|
||
// 结果:0.34
|
||
```
|
||
|
||
## `medianByColumn(t, f_name)`
|
||
|
||
指定列的中位数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名,字符串 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return medianByColumn(t2, 'c');
|
||
// 结果:38
|
||
```
|
||
|
||
## `skewByColumn(t, f_name)`
|
||
|
||
指定列的偏度
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名,字符串 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return skewByColumn(t2, 'c');
|
||
// 结果:-0.75
|
||
```
|
||
|
||
## `stdevByColumn(t, f_name)`
|
||
|
||
指定列的标准差
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名,字符串 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return stdevByColumn(t2, 'c');
|
||
// 结果:17.08
|
||
```
|
||
|
||
## `varByColumn(t, f_name)`
|
||
|
||
指定列的方差
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名,字符串 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return varByColumn(t2, 'c');
|
||
// 结果:291.67
|
||
```
|
||
|
||
## `aveDevByColumn(t, f_name)`
|
||
|
||
指定列与平均值的绝对偏差的平均值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `f_name` | string | 指定列名,字符串 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return aveDevByColumn(t2, 'c');
|
||
// 结果:12.5
|
||
```
|
||
|
||
## `percentValueByField(t, key_field, quart)`
|
||
|
||
数据集在指定百分位数上对应的数值
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------ | ---------------- |
|
||
| `t` | array | 数据表 |
|
||
| `key_field` | string | 指定列名,字符串 |
|
||
| `quart` | real | 指定分位数,实数 |
|
||
|
||
返回:real
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t2 := array(('a': 2, 'c': 13), ('a': 3, 'c': 33), ('a': 3, 'c': 43), ('a': 5, 'c': 53));
|
||
return percentValueByField(t2, 'c', 0.1);
|
||
// 结果:19
|
||
```
|
||
|
||
## `statByColumn(t, fname, _type)`
|
||
|
||
依据Type传递的字符串,返回字段Fname序列的type值。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | ------ | ---------------- |
|
||
| `t` | array | 数据表类型,数据 |
|
||
| `fname` | string | 字符串,字段名称 |
|
||
| `_type` | string | 字符串,返回类型 |
|
||
|
||
返回:any
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
s := `array('a': (1, 2, 3, 4, 5), 'b': (-2, -3, -4, 5, 6), 'c': (3, 4, 5, 6, 7), 'd': (4, 5, 6, 7, 8));
|
||
return statByColumn(s, 'a', 'MAX');
|
||
// 返回a列最大值:5
|
||
```
|
||
|
||
## `describe(data, percentiles)`
|
||
|
||
简单描述统计
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------------- | --------------- | ---------------------------------------------------- |
|
||
| `data` | array of number | 一维数字数组,或 二维矩阵。二维矩阵时,对每列进行操作 |
|
||
| `percentiles` | array of number | 统计的分位点,默认取array(0.25,0.5, 0.75) |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例01:
|
||
|
||
```tsl
|
||
load_dataset_iris(data);
|
||
return describe(data);
|
||
```
|
||
|
||
范例02:
|
||
|
||
```tsl
|
||
return describe(randn(0, 1, 1000), array(0.05, 0.1)->0.95);
|
||
```
|
||
|
||
## `framecorrel(data)`
|
||
|
||
数据表-相关系数矩阵
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ----- | ----------------------------------------------- |
|
||
| `data` | table | Table,二维数据表,列名可为字符串,不支持一维数组 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
data := TSUT_Data_ZSZF()[: , 1:];
|
||
return framecorrel(data);
|
||
```
|
||
|
||
## `framecov(data)`
|
||
|
||
数据表-协方差
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ----- | ------------------------------------------------ |
|
||
| `data` | table | Table,二维数据表,列名可为字符串。不支持一维数组 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
data := TSUT_Data_ZSZF()[: , 1:];
|
||
return framecov(data);
|
||
```
|
||
|
||
## `framehhi(data)`
|
||
|
||
数据表-HHI指数、赫芬达尔—赫希曼指数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | ----- | ---------- |
|
||
| `data` | table | Table,数组 |
|
||
|
||
返回:array
|
||
|
||
## `framevaluecounts(data, countfieldname, iforder)`
|
||
|
||
数据表-计数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------------- | ------ | ------------------------------------ |
|
||
| `data` | table | Table,可以为二维数据表或者为一维数组 |
|
||
| `countfieldname` | string | String,计数字段名,默认为""个数"" |
|
||
| `iforder` | bool | Bool,是否排序,默认为真 |
|
||
|
||
返回:array
|
||
|
||
## `simpledescribe(data)`
|
||
|
||
简单描述统计
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------ | --------------- | ----------------------------------------------------- |
|
||
| `data` | array of number | 一维数字数组,或 二维矩阵,二维矩阵时,对每列进行操作 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
范例01
|
||
|
||
```tsl
|
||
load_dataset_iris(data);
|
||
return simpledescribe(data);
|
||
```
|
||
|
||
范例02
|
||
|
||
```tsl
|
||
return simpledescribe(randn(0, 1, 1000), array(0.05, 0.1)->0.95);
|
||
```
|
||
|
||
## `renameFieldByFormat(t, ifcopy)`
|
||
|
||
通过格式字符串修改列名。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------- | ----- | -------------------------------------------- |
|
||
| `t` | array | 数组类型,数据 |
|
||
| `ifcopy` | bool | 布尔类型,是否在拷贝后的数组改列名,默认True |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 给随机数组批量加后缀
|
||
t := rand(10, 10);
|
||
suffix := '%s'$"@A";
|
||
ifcopy := true;
|
||
return renameFieldByFormat(t, suffix, ifcopy);
|
||
// 输出:
|
||
// Execute script error at Line:5
|
||
// function:__main__:line 5:instruction:usercall: function:renameFieldByFormat compile error or not found
|
||
// function:__main__:line 5:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sparse1(s, a, m, n)`
|
||
|
||
挤出任何非零元素,将满矩阵转化为稀疏格式,与Sparsefull函数对应。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | --------------------------------- |
|
||
| `s` | array of real | 待转化的m\*n满矩阵 |
|
||
| `a` | array of real | 变参返回矩阵S的稀疏格式,二维数组 |
|
||
| `m` | integer | 变参返回矩阵S的行数,整数 |
|
||
| `n` | integer | 变参返回矩阵S的列数,整数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 将矩阵S由满矩阵格式转化为稀疏格式
|
||
s := array((0, 0, 4, 0, 0),
|
||
(0, 1, 0, 0, 0),
|
||
(0, 0, 0, 0, 0),
|
||
(3, 0, 0, 0, 0),
|
||
(0, 0, 0, 0, 5));
|
||
return sparse1(s);
|
||
// 输出:
|
||
// Execute script error at Line:7
|
||
// function:__main__:line 7:instruction:usercall: function:sparse1 compile error or not found
|
||
// function:__main__:line 7:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sparse2(i, j, v, m, n)`
|
||
|
||
根据i、j和v三元组生成m\*n稀疏格式矩阵S
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | ------------------------ |
|
||
| `i` | array of real | 存放矩阵行标的一元数组 |
|
||
| `j` | array of real | 存放矩阵列标的一元数组 |
|
||
| `v` | array of real | 存放矩阵元素值的一元数组 |
|
||
| `m` | integer | 矩阵的行数,整数 |
|
||
| `n` | integer | 矩阵的列数,整数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 根据i,j,v三元组生成稀疏格式矩阵
|
||
i := array(0, 1, 2, 3);
|
||
j := array(3, 1, 4, 2);
|
||
v := array(5, 3, 2, 4);
|
||
return sparse2(i, j, v, 5, 5);
|
||
// 输出:
|
||
// Execute script error at Line:5
|
||
// function:__main__:line 5:instruction:usercall: function:sparse2 compile error or not found
|
||
// function:__main__:line 5:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `speye(m)`
|
||
|
||
创建m\*m稀疏单位矩阵,指定为方阵
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------- | ------------------------ |
|
||
| `m` | integer | 稀疏单位矩阵的尺寸,整数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建m*m稀疏单位矩阵
|
||
a := speye(4);
|
||
return a;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:speye compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprand1(s)`
|
||
|
||
创建与矩阵S结构相同的稀疏格式矩阵,并将其中的非零元素替换为均匀分布随机数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | -------- |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建与矩阵S相同结构的稀疏均匀随机矩阵
|
||
s := array((0, 0, 3, 0, 0),
|
||
(0, 0, 0, 0, 0),
|
||
(0, 0, 0, 5, 0),
|
||
(0, 2, 0, 0, 0),
|
||
(0, 0, 0, 0, 4));
|
||
return sprand1(s);
|
||
// 输出:
|
||
// Execute script error at Line:7
|
||
// function:__main__:line 7:instruction:usercall: function:sprand1 compile error or not found
|
||
// function:__main__:line 7:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprand2(m, n, pct)`
|
||
|
||
创建m\*n稀疏均匀随机矩阵,其中非零元素所占比例为pct
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ------- | ---------------------------- |
|
||
| `m` | integer | 矩阵的行数,整数 |
|
||
| `n` | integer | 矩阵的列数,整数 |
|
||
| `pct` | real | 矩阵中非零元素所占比例,实数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建10*10稀疏均匀随机矩阵
|
||
a := sprand2(10, 10, 0.3);
|
||
return a;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:sprand2 compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprandn1(s)`
|
||
|
||
创建与矩阵S结构相同的稀疏格式矩阵,并将其中的非零元素替换为正态分布随机数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | -------- |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建与矩阵S相同结构的稀疏正态随机矩阵
|
||
s := array((0, 0, 0, 0, 0),
|
||
(0, 0, 0, 5, 0),
|
||
(3, 0, 0, 0, 0),
|
||
(0, 0, 2, 0, 0),
|
||
(0, 0, 0, 0, 4));
|
||
return sprandn1(s);
|
||
// 输出:
|
||
// Execute script error at Line:7
|
||
// function:__main__:line 7:instruction:usercall: function:sprandn1 compile error or not found
|
||
// function:__main__:line 7:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprandn2(m, n, pct)`
|
||
|
||
创建m\*n稀疏正态随机矩阵,其中非零元素所占比例为pct
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ------- | ---------------------------- |
|
||
| `m` | integer | 矩阵的行数,整数 |
|
||
| `n` | integer | 矩阵的列数,整数 |
|
||
| `pct` | real | 矩阵中非零元素所占比例,实数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建10*10稀疏正态随机矩阵
|
||
a := sprandn2(10, 10, 0.2);
|
||
return a;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:sprandn2 compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprandsym1(s)`
|
||
|
||
创建与矩阵S结构相同的稀疏格式矩阵,以下三角矩阵为基准的对称正态分布随机矩阵
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | -------- |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建与矩阵S相同结构的对称稀疏正态随机矩阵
|
||
s := array((6, 1, 0, 14, 0),
|
||
(0, 7, 0, 0, 15),
|
||
(1, 0, 8, 0, 0),
|
||
(0, 2, 0, 9, 0),
|
||
(0, 0, 3, 0, 10));
|
||
return sprandsym1(s);
|
||
// 输出:
|
||
// Execute script error at Line:7
|
||
// function:__main__:line 7:instruction:usercall: function:sprandsym1 compile error or not found
|
||
// function:__main__:line 7:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sprandsym2(n, pct)`
|
||
|
||
创建n\*n稀疏正态随机矩阵,以下三角矩阵为基准对称正态分布随机矩阵,其中非零元素所占比例大约为pct
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----- | ------- | ---------------------------- |
|
||
| `n` | integer | 方阵的尺寸,整数 |
|
||
| `pct` | real | 方阵中非零元素所占比例,实数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 创建10*10对称稀疏正态随机矩阵
|
||
a := sprandnsym2(10, 0.2);
|
||
return a;
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:sprandnsym2 compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `sparsefull(s, m, n)`
|
||
|
||
将稀疏矩阵格式转化为满矩阵,与Sparse1函数相对应。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | ------------------------ |
|
||
| `s` | array of real | 稀疏格式矩阵 |
|
||
| `m` | integer | 转化为满矩阵的行数,整数 |
|
||
| `n` | integer | 转化为满矩阵的列数,整数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 将S由稀疏格式矩阵转化为5*5满矩阵格式
|
||
s := array(0: (0: 1), 2: (2: 3), 3: (3: 4));
|
||
return sparsefull(s, 5, 5);
|
||
// 输出:
|
||
// Execute script error at Line:3
|
||
// function:__main__:line 3:instruction:usercall: function:sparsefull compile error or not found
|
||
// function:__main__:line 3:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `spones(s, n)`
|
||
|
||
将稀疏矩阵S中的非零元素替换为n
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | ------------------------ |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
| `n` | real | 非零元素被替换的值,实数 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 将S中非零元素替换为1
|
||
s := array(0: (0: 1), 2: (2: 3), 3: (3: 4));
|
||
return spones(s, 1);
|
||
// 输出:
|
||
// Execute script error at Line:3
|
||
// function:__main__:line 3:instruction:usercall: function:spones compile error or not found
|
||
// function:__main__:line 3:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `spnnz(s)`
|
||
|
||
稀疏矩阵S中的非零元素数目
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | -------- |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 稀疏正态随机矩阵A中非零元素数目
|
||
a := sprandn2(5, 5, 0.2);
|
||
return spnnz(a); // 返回4(随机)
|
||
```
|
||
|
||
## `spnonzeros(s)`
|
||
|
||
提取稀疏矩阵S中的非零元素
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | -------- |
|
||
| `s` | array of real | 稀疏矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 提取稀疏正态随机矩阵A中非零元素
|
||
a := sprandn2(5, 5, 0.2);
|
||
return spnonzeros(a);
|
||
// 输出:
|
||
// Execute script error at Line:2
|
||
// function:__main__:line 2:instruction:usercall: function:sprandn2 compile error or not found
|
||
// function:__main__:line 2:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `ifsparse(s)`
|
||
|
||
判断是否为稀疏矩阵。检查条件:只检查下标,下标全为大于等于0的整数。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------------- | ---------- |
|
||
| `s` | array of real | 待判断矩阵 |
|
||
|
||
返回:integer
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 判断矩阵S是否为稀疏矩阵
|
||
s := Array(3: 2, "B": 3);
|
||
return ifsparse(s); // 返回0
|
||
```
|
||
|
||
## `spdiags1(a)`
|
||
|
||
提取矩阵非零对角线
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ------------------------------ |
|
||
| `a` | array | Array,二维数组,原(稀疏)矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 提取矩阵A中非零对角线
|
||
a := array((6, 0, 13, 0, 0),
|
||
(0, 7, 0, 14, 0),
|
||
(1, 0, 8, 0, 15),
|
||
(0, 2, 0, 9, 0),
|
||
(0, 0, 3, 0, 10));
|
||
return spdiags1(a);
|
||
```
|
||
|
||
## `spdiags2(a, d)`
|
||
|
||
提取矩阵指定对角线
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ------------------------------------------ |
|
||
| `a` | array | Array,二维数组,原(稀疏)矩阵 |
|
||
| `d` | array | Array,一维数组,对角线序列;也可以为数字; |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 提取矩阵A中第-2,0,2条对角线,按列排列
|
||
a := array((6, 0, 13, 0, 0),
|
||
(0, 7, 0, 14, 0),
|
||
(1, 0, 8, 0, 15),
|
||
(0, 2, 0, 9, 0),
|
||
(0, 0, 3, 0, 10));
|
||
d := array(-2, 0, 2);
|
||
return spdiags2(a, d);
|
||
```
|
||
|
||
## `spdiags3(b, d, a)`
|
||
|
||
根据指定列替换稀疏矩阵对角线
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ----- | ------------------------------ |
|
||
| `b` | array | Array,二维数组,对角矩阵 |
|
||
| `d` | array | Array,一维数组,对角线序列 |
|
||
| `a` | array | Array,二维数组,原(稀疏)矩阵 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 将矩阵A中d指定的对角线替换为B中的列
|
||
b := array((5, 10, 15),
|
||
(4, 9, 14),
|
||
(3, 8, 13),
|
||
(2, 7, 12),
|
||
(1, 6, 11));
|
||
d := array(-2, 0, 2);
|
||
a := array((6, 0, 13, 0, 0),
|
||
(0, 7, 0, 14, 0),
|
||
(1, 0, 8, 0, 15),
|
||
(0, 2, 0, 9, 0),
|
||
(0, 0, 3, 0, 10));
|
||
return spdiags3(b, d, a);
|
||
```
|
||
|
||
## `spdiags4(b, d, m, n)`
|
||
|
||
根据指定列创建稀疏矩阵
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---- | ------- | -------------------------------- |
|
||
| `b` | array | Array,二维数组,对角矩阵 |
|
||
| `d` | array | Array,一维数组,对角线序列 |
|
||
| `m` | integer | Integer,正整数,(稀疏)矩阵的行 |
|
||
| `n` | integer | Integer,正整数,(稀疏)矩阵的列 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 根据对角矩阵B创建稀疏带状矩阵
|
||
b := array((5, 10, 15),
|
||
(4, 9, 14),
|
||
(3, 8, 13),
|
||
(2, 7, 12),
|
||
(1, 6, 11));
|
||
d := array(-2, 0, 2);
|
||
m := 5;
|
||
n := 5;
|
||
return spdiags4(b, d, m, n);
|
||
```
|
||
|
||
## `compareDataOfDifferentDataProvider(t_src, t_dest, src_provider, dest_provider, key_arr, value_arr, code_field)`
|
||
|
||
比较两个数据源的差异
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------------- | ------ | ------------------------------------------------------ |
|
||
| `t_src` | array | Array 源数据 |
|
||
| `t_dest` | array | Array 目标数据 |
|
||
| `src_provider` | string | String 源数据提供商 |
|
||
| `dest_provider` | string | String 目标数据提供商 |
|
||
| `key_arr` | array | Array 要比较表的Key字段(也就是数据表中的 唯一性字段) |
|
||
| `value_arr` | array | Array 要比较的Value字段 |
|
||
| `code_field` | string | String 代码字段(任何数据,都必须有编码字段) |
|
||
|
||
返回:array
|
||
|
||
## `pivot(t, index, vals)`
|
||
|
||
透视,数据透视表
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ------- | --------------- | ------------------------------------------------------------------------------------------------------- |
|
||
| `t` | array | 二维数组,待透视表,t[:,array(index,columns)] 不能包含重复的行,即index,column 必须可以作为t的唯一主键 |
|
||
| `index` | string \| array | 字符串或一维字符串数组,行分类字段,t的列名,多个字段可以用数组,为nil表示取t的行下标 |
|
||
| `vals` | string \| array | 字符串或一维字符串数组,值字段,t的列名,多个字段可以用数组, |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 指定条件,行标为日期,列标为名称,值为收盘价、涨幅、振幅的数据透视表
|
||
stocks := array("SZ000001", "SZ000002", "SH600050", "SZ300775");
|
||
begt := 20210515T;
|
||
endt := 20210525T;
|
||
t := select ['StockID'] as "代码",
|
||
["StockName"] as "名称",
|
||
dateToStr(['date']) as "日期",
|
||
["close"] as "收盘价",
|
||
spec(specDate(stockZf3(), ['date']), ['StockID']) as "涨幅",
|
||
spec(specDate(stockZdf3(), ['date']), ['StockID']) as "振幅",
|
||
spec(base(10029), ['StockID']) as "申万行业"
|
||
from markettable datekey begt to endt of stocks end;
|
||
index := "日期";
|
||
colunms := "名称";
|
||
vals := array("收盘价", "涨幅", "振幅");
|
||
return pivot(t, index, colunms, vals);
|
||
// 输出:
|
||
// Execute script error at Line:16
|
||
// function:__main__:line 16:instruction:usercall: function:pivot compile error or not found
|
||
// function:__main__:line 16:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `nonIntersectionPart(t1, t2, key_field)`
|
||
|
||
求差集(返回在t1中存在,而在t2中不存在的记录)
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------ | ------------ |
|
||
| `t1` | array | 数据表 |
|
||
| `t2` | array | 数据表 |
|
||
| `key_field` | string | 指定某一字段 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
t1 := array(('a': 1, 'b': 4), ('a': 7, 'b': 8), ('a': 2, 'b': 3));
|
||
t2 := array(('a': 1, 'b': 1), ('a': 7, 'b': 8), ('a': 5, 'b': 5));
|
||
return nonIntersectionPart(t1, t2, 'b');
|
||
// 输出:
|
||
// Execute script error at Line:3
|
||
// function:__main__:line 3:instruction:usercall: function:nonIntersectionPart compile error or not found
|
||
// function:__main__:line 3:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `getSubTableByKey(t, key_field, return_fields)`
|
||
|
||
将字符串KeyField以分号分隔,在数组t中从列ReturnFields匹配被分割的值,若找到则返回该行信息,否则返回空数组。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------------- | ------ | ------------------------ |
|
||
| `t` | array | 数据表类型,数据表 |
|
||
| `key_field` | string | 字符串,关键字字段 |
|
||
| `return_fields` | string | 字符串,要返回的字段名称 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
s := array(array('A': 'a', 'B': 'b', 'C': 'c', 'D': 'd', 'e': 'e'),
|
||
array('A': 'c', 'B': 3, 'C': 4, 'D': 5, 'e': 6),
|
||
array('A': 3, 'B': 4, 'C': 5, 'D': 6, 'e': 7));
|
||
return getSubTableByKey(s, 'A', 'a;c');
|
||
// 返回:
|
||
```
|
||
|
||
## `expandTable(t, key_field)`
|
||
|
||
按指定字段展开表格,根据Keyfield展开指定列。展开的列值必须二维数据表,否则保留原值。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------ | -------------------------------- |
|
||
| `t` | array | 数组类型,数据 |
|
||
| `key_field` | string | 字符串类型,关键字,需展开的列名 |
|
||
|
||
返回:array
|
||
|
||
### 示例
|
||
|
||
```tsl
|
||
// 按照分红送股列展开数据
|
||
data := query("", "SH600000;SZ000002", true, "", "代码", defaultStockId(), "名称",
|
||
currentStockName(), "分红送股", infoArray(18));
|
||
return expandTable(data, "分红送股");
|
||
// 输出:
|
||
// Execute script error at Line:4
|
||
// function:__main__:line 4:instruction:usercall: function:expandTable compile error or not found
|
||
// function:__main__:line 4:instruction:usercall: function execute error
|
||
```
|
||
|
||
## `arrayToFm(value, sample_value)`
|
||
|
||
将数组转换为 FMArray,并按样例值确定单元格类型。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| -------------- | ----- | ----------------------------------------------------------- |
|
||
| `value` | array | 输入数组 |
|
||
| `sample_value` | float | 单元格类型样例;如 `0` 生成整型单元格,`0.0` 生成浮点单元格 |
|
||
|
||
返回:fmarray
|