kdb - 如何将函数应用于 KDB 中的某些列?
问题描述
假设我有这张桌子:
t: flip `col1`col2`x_col1`x_col2!(`a`b`c`d;`aa`bb`cc`dd;1 2 3 4;11 22 33 44)
col1 col2 x_col1 x_col2 x_col...
a aa 1 11
b bb 2 22
c cc 3 33
d dd 4 44
我可以有任意数量的列,称为 x_col1..100 等。我怎么能说所有匹配“x_col*”的列乘以 10?
col1 col2 x_col1 x_col2 x_col...
a aa 10 110
b bb 20 220
c cc 30 330
d dd 40 440
谢谢
解决方案
可以使用类似的东西:
q)@[t;c where (c:cols t) like "x_col*";*;10]
col1 col2 x_col1 x_col2
-----------------------
a aa 10 110
b bb 20 220
c cc 30 330
d dd 40 440
编辑:如果通过 x_col1 查看多个例如:
@[t;c where i;*;(sum i:(c:cols t) like "x_col*")#enlist t`x_col1]
col1 col2 x_col1 x_col2
-----------------------
a aa 1 11
b bb 4 44
c cc 9 99
d dd 16 176