用 kdb 中的给定条件替换列中的某些记录
Replace certain records in a column with given condition in kdb
我下面有一个table:
tab:([]a:(`$"1-01";`2;`$"3-01";`4;`$"5-01";`6);source:`a`a`b`b`a`b)
a source
-----------
1-01 a
2 a
3-01 b
4 b
5-01 a
6 b
我想将 1-01 和 5-01 改回 1 但不是 3-01,具体取决于来源。我写了下面的代码:
`$({ssr[string x;"-01";""]}each tab[`a])
通过这样做我可以把它放回专栏,但这不是我想要的。我还做了以下操作:
`$({ssr[string x;"-01";""]}each tab[`a] where source=`a)
但是这样做之后我不知道如何把它放回table。然后我想到了使用执行控制:但不确定我应该如何编码。我已经完成了一半,但它并没有真正起作用:
?[tab[`source] = `a;`$({ssr[string tab[`a];"-01";""]});tab[`a]]
一个"update"似乎是你需要的:
q)update `$ssr[;"-01";""] each string a from tab where source=`a
a source
-----------
1 a
2 a
3-01 b
4 b
5 a
6 b
我下面有一个table:
tab:([]a:(`$"1-01";`2;`$"3-01";`4;`$"5-01";`6);source:`a`a`b`b`a`b)
a source
-----------
1-01 a
2 a
3-01 b
4 b
5-01 a
6 b
我想将 1-01 和 5-01 改回 1 但不是 3-01,具体取决于来源。我写了下面的代码:
`$({ssr[string x;"-01";""]}each tab[`a])
通过这样做我可以把它放回专栏,但这不是我想要的。我还做了以下操作:
`$({ssr[string x;"-01";""]}each tab[`a] where source=`a)
但是这样做之后我不知道如何把它放回table。然后我想到了使用执行控制:但不确定我应该如何编码。我已经完成了一半,但它并没有真正起作用:
?[tab[`source] = `a;`$({ssr[string tab[`a];"-01";""]});tab[`a]]
一个"update"似乎是你需要的:
q)update `$ssr[;"-01";""] each string a from tab where source=`a
a source
-----------
1 a
2 a
3-01 b
4 b
5 a
6 b