小编Jms*_*Jms的帖子

(q/kdb +)生成自动列表

例1)
我有下面的代码

5#10+1*2
Run Code Online (Sandbox Code Playgroud)

生成

index   value
0       12
1       12
2       12
3       12
4       12
Run Code Online (Sandbox Code Playgroud)

如何用索引替换数字"1"?
然后生成

5#10+index*2

index   value
0       10
1       12
2       14
3       16
4       18
Run Code Online (Sandbox Code Playgroud)

更新示例2)
现在,如果我有,让我们说

mult:5;
t:select from ([]numC:1 3 6 4 1;[]s:50 16 53 6 33);
update lst:(numC#'s) from t
Run Code Online (Sandbox Code Playgroud)

最后一次更新将生成

 numC   s     lst
 1      50    50
 3      16    16 16 16
 6      53    53 53 53 53 53 53
 4      6     6 6 6 6
 1      33    33
Run Code Online (Sandbox Code Playgroud)

如何按以下方式生成"lst"列?

 numC …
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
1
解决办法
373
查看次数

(q/kdb +)插值公式对某些情况不起作用

我有以下公式在q中生成线性插值:

lsfit:{(enlist y) lsq x xexp/: til 1+z};
interp:{[xn;x;y]sum (1;xn)*flip lsfit[x;y;1]};
Run Code Online (Sandbox Code Playgroud)

以及下面的数据进行插值:

xn:(4.7;7.5;4.9);
x:(3 5f;7.5 7.5;3 5f);
y:(1.3 1.5;2 2f;1.3 1.5);
interp'[xn;x;y]
Run Code Online (Sandbox Code Playgroud)

正在产生

index   value
0   enlist 1.47
1   enlist 0nf
2   enlist 1.49
Run Code Online (Sandbox Code Playgroud)

为什么我要0进入第二排呢?

更新:其他示例的Inconsistet行为

xn:(6;7;8;9);
x:(6 6f;7 7f;8 8f;9 9f);
y:(1 1f;1 1f;1 1f;1 1f);
interp'[xn;x;y]
Run Code Online (Sandbox Code Playgroud)

生成

index   value
0   enlist 1f
1   enlist 0nf
2   enlist 0nf
3   enlist 1f
Run Code Online (Sandbox Code Playgroud)

因此,看起来有时公式有效,第0行和第3行,有时它不行,第1行和第2行.

我该如何解决?

谢谢!

1
推荐指数
1
解决办法
1084
查看次数

(q/kdb +)使用先前行的结果更新行

使用表格

t:([]c1: 3 4 7 2 4.0;c2: 2 8 10 1 9.0;c3:5 8 13 2 11.0)

c1  c2  c3
3   2   5
4   8   8
7   10  13
2   1   2
4   9   11
Run Code Online (Sandbox Code Playgroud)

我需要更新3个新列(c1M,c2M,c3M),其中:

  • 第一行:

    • c1M:avg(c1,c2,c3)
    • c2M:avg(c1,c2)
    • c3M:c3
  • 其他行:

    • c1M:avg(c1,c2,c3)
    • c2M:avg(prev c1M,prev c2M)
    • c3M:max(c3,c1M,c2M)

我可以用第一排做

t:update c1M:avg(c1,c2,c3),c2M:avg(c1,c2),c3M:c3 from t where i=0

c1  c2  c3  c1M c2M c3M
3   2   5   3.3 2.5 5
4   8   8   0n  0n  0N
7   10  13  0n  0n  0N
2   1 …
Run Code Online (Sandbox Code Playgroud)

kdb

0
推荐指数
1
解决办法
499
查看次数

标签 统计

kdb ×2