直接用 context by + csort + limit -1即可 iv_data = select * from iv where date(trigger)=today() context by code,KPrice csort trigger limit -1
回答于 2023-11-10 16:26
可以参考下述脚本,将不同品种的时间段用字典存储,然后在查询中过滤: T = rand(24*60*60,100)$SECONDsym = take(`a`b, 100)val = rand(10.0, 100)t = table(T, sym, val)R=dict(`a`b, ([09:30:00:11:00:00,13:00:00:15:00:00], [08:30:00:10:00:00,14:00:00:16:00:00]))def timeFilter(R, T, sym): any(T between:R R[s...
回答于 2023-11-10 14:25
m = 1..10000000 $ 1000000:10n = -200 // 可以参考以下几种实现,其中 4 性能最高timer{index = til(m.rows()).drop(n); m[index,]}timer iif(n>0, m[n:,], m[:(m.rows()+n),])timer m.transpose().drop(n).transpose()timer eachLeft(def(x,y): x.drop(y), m, n);
回答于 2023-11-10 11:33
可以参考以下脚本实现: x = [[1,2,3],[2,3,4],[3]].flatten()each(size, groups(x))
回答于 2023-11-03 13:36
可以参考如下代码: m1.rowNames().at(at(m1.loc(colFilter="block1")==1)) //索引block1列值为1的行名(sym3)m1.colNames().at(at(m1.loc(rowFilter="sym2")==1)) //索引出sym2行值为1的列名(block2,block4)
回答于 2023-11-02 17:03
a = `a`b`cdef f(i, a):each(add{i,}, a)each(f{,a}, 1..10) 因为函数内部使用了 a,但 a 不是入参,函数不能引用外部变量,可以参考上述脚本进行修改
回答于 2023-11-02 16:39
x = m.subarray(0:m.size()).imax()rowIndex = x % m.rows()colIndex = x / m.rows() 或者 m = rand(100, 20) $ 4:5i=imax m; colIndex=imax each(at,m,i); rowIndex=i[colIndex];
回答于 2023-11-02 15:41
可以先转成带标签的矩阵,然后利用 cross 函数将两个矩阵的列两两求内积。如果两个矩阵的行标签不完全一致,可以先通过 align 函数进行对齐。参考脚本如下: tb1=table(`sym1`sym2`sym3`sym4`sym5 as SYMBOL,NULL NULL 1 NULL NULL as block1,NULL 1 NULL NULL NULL as block2,1 NULL NULL 1 NULL as block3,NULL 1 NULL N...
回答于 2023-11-02 15:08