例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) 我有以下公式在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行.
我该如何解决?
谢谢!
使用表格
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 ×2