我们给出了两种示例方法,推荐第二种,实现简单、性能更好。 模拟数据: t = table(2022.08.01 2022.08.02 2022.08.03 as date, `000001.SZ`000002.SZ`000003.SZ as windCode, `1101`1102`1103 as industryCode) 方案1: res = select iif(isNull(industryCode), 0, 1) from t pivot by date, windCode, industryCode...
回答于 2022-09-09 17:19
示例代码如下: def f(t, i) { indCode = t[i][`indCode] indexCode = t[i][`indexCode] code = t[i][`code] dateStart = t[i][`date] dateEnd = t[i+1][`date] weight = t[i][`weight] totalMV = t[i][`totalMV] pholding = t[i][`pholding] jr = t[i][`jr] if(isNull(dateEnd)) { days = dateStart } // 表示...
回答于 2022-09-09 17:18
思路:原始数据为每只股票入市、退市日期记录,数据量不大,可以逐条处理,使用交叉连接生成每只股票相应的记录,再unionAll合并。 示例代码如下: def f(t, i) { windCode = t[i][`S_INFO_WINDCODE] code = t[i][`SW_IND_CODE] entryDate = t[i][`ENTRY_DT] removeDate = t[i][`REMOVE_DT] days = entryDate..remov...
回答于 2022-09-09 17:17
t1 = table(2021.01.01..2021.01.30 as date, take(`A`B`C`D`F`G`F, 30) as code) t2 = table(2021.01.15..2021.02.28 as date, take(`A`B`C`D`F`G`F, 45) as code) // 方式一 timer select date, code from lj(t1, t2, `date`code) where isNull(t2.date) and isNull(t2.code) // 方式二 t = select date,code from ej(t...
回答于 2022-08-29 14:54
使用元编程sqlUpdate函数,动态构造需要置为0或者NULL的列。 sym = `C`C`C`C`MS`MS`MS`IBM`IBM time = [09:34:57, 09:34:59, 09:35:01, 09:35:02, 09:34:57, 09:34:59, 09:35:01, 09:35:01, 09:35:02] price= 50.6 50.62 50.63 50.64 29.46 29.48 29.5 174.97 175.02 t = select price from table(sym, time, price) pivot...
回答于 2022-08-29 14:38
d = dict(INT, ANY) d.dictUpdate!(append!, [1, 2, 3], [1, 1, 1]) // 方式一 open = matrix(INT, 2, 3, , 3) v = mstd(open, 2) d[5]=v // 方式二 open = matrix(INT, 2, 3, , 3) v = mstd(open, 2) d.dictUpdate!(append!, 5, [v], x -> x)
回答于 2022-08-29 14:37
m * n 与 m * n 运算,对应位置运算。m * n 与 m * 1 分别按列对应位置运算。运算包括:+ - * \ 。 m1 = matrix(INT, 4, 3, , 5)m2 = matrix(INT, 4, 1, , 2)m3 = matrix(INT, 1, 3, , 2)m1 + m2m1 - m2m1 * m2m1 \ m2 // Incompatible vector/matrix sizem1 + m3m1 - m3m1 * m3m1 \ m3
回答于 2022-07-22 15:53
示例代码如下: N = 100 tmp = table(take(`000001.SH, N) as index_code, take(`60 + format(rand(1..1000, N), "0000"), N) as secu_code, rand(1990.01.01..2000.01.01, N) as indate, rand(2015.01.01..2020.01.01, N) as outdate) // 方案一 timer { tmp2 = cj(tmp, table(1990.01.01..2020.01.01 as dayRan...
回答于 2022-07-22 15:52