想象一下,我有一个填充表T_old与给定的模式(让我们说混合的int,浮点数,符号等)我现在想要创建一个新的空/空表T_new,它具有与T_old完全相同的模式.我该怎么做呢?最后,我希望这两个操作都有效:T_old uj T_new和T_new uj T_old.有什么建议?
我有一个大约20K项目的排序列表v.我想在第一个v [i]> K的点处将其拆分为2个列表
N:20000;
v:asc N?100000; / N random numbers sorted
K:200; / threshold
v1:v[where v<=K]; / "v<=K" has O(N) complexity, "where" has O(N) too
v2:(count v1) _ v; / list is sorted, this holds.
Run Code Online (Sandbox Code Playgroud)
问题:如何避免v <= 200,所以它不计算长度为N的整个中间布尔向量,换句话说,在第一次匹配后找不到值?我实际上需要一个索引来执行拆分.假设K靠近列表的开头.
这是与绩效相关的问题.(注意忽略在"asc"上花费的时间.)
我有一个包含多个标志的表,我想将这些标志映射到它们所代表的值.
tab:([] t:til 4 ; f1:1100b;f2:1010b;f3:0101b;f4:0011b )
Run Code Online (Sandbox Code Playgroud)
如何简化这些多个更新语句?
tab:update f1s:`googl from tab where f1
tab:update f2s:`appl from tab where f2
tab:update f3s:`amzn from tab where f3
Run Code Online (Sandbox Code Playgroud) 我想比较所有表和模式在两个不同的实例中是相同的.我怎么能够遍历那个?
schemas:
(0# tab) ~ (h"0#tab")
Run Code Online (Sandbox Code Playgroud)
但是有10个表.什么是比较模式的最快方法?
在KDB我有这个表:
q)tab
items sales prices adjust factor
--------------------------------
nut 6 10 1b 1.2
bolt 8 20 1b 1.5
cam 0 15 1b 2
cog 3 20 0b 0n
nut 6 10 0b 0n
bolt 8 20 0b 0n
Run Code Online (Sandbox Code Playgroud)
我想根据条件计算第4列,例如:
if[adjust; prices * factor;]
Run Code Online (Sandbox Code Playgroud)
目的是获得以下结果:
items sales prices newPrices
----------------------------
nut 6 10 12
bolt 8 20 30
cam 0 15 30
cog 3 20 20
nut 6 10 10
bolt 8 20 20
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?
我复制了q for mortals如下的确切示例:
q)h:hopen `:D:/q4m/raw
q)h[42]
548i
q)h 10 20 30
548i
q)hclose h
q)get `:D:/q4m/raw
'D:/q4m/raw
[0] get `:D:/q4m/raw
Run Code Online (Sandbox Code Playgroud)
查看目录,在那里创建文件.为什么我get不能呢?
相反,如果我这样做:
q)h:hopen `:D:/q4m/L
q)h[42]
628i
q)h[10 20 30]
628i
q)hclose h
q)get `:D:/q4m/L
0 1 2 3 4 42 10 20 30
Run Code Online (Sandbox Code Playgroud)
事情变得正常,为什么?
我正在编写一个函数来选择数据库中以字母"A"开头的所有符号,后跟"B",直到字母"Z".我有一个虚拟表设置3个字符,如下所示...
t:([]symbol:`A`App`B`Bapp`C`Capp; price:104.3 124.3 134.2 103.4 402.7 209.8; ID:1 2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)
以及从符号看起来像x的表中选择的函数...
fetch:{[x;y]select from x where symbol like y}
Run Code Online (Sandbox Code Playgroud)
然后我为每个字母调用函数并将其复活到一个新表...
fetchedA:h (`fetch; `t; "A*")
fetchedB:h (`fetch; `t; "B*")
fetchedC:h (`fetch; `t; "C*")
Run Code Online (Sandbox Code Playgroud)
新的空表和upsert函数......
newNormData:([]symbol:`$(); price:`float$(); ID:`int$())
newNorm:{[x] `newNormData upsert x}
h (`newNorm; fetchedA)
h (`newNorm; fetchedB)
h (`newNorm; fetchedC)
Run Code Online (Sandbox Code Playgroud)
我不想为每个服务器进行26次函数调用,而是要进行1次调用,遍历字母表中的每个字符.在kdb/q中执行此操作的正确方法是什么?
我有下表,并希望删除所有重复的行。我创建了一个列dup,用于计算重复项的数量。
delete from table where dup>1 将删除重复项的所有条目,但我仍希望表中保留1个条目。
ISIN RIC BLOOMBERG dup
-----------------------------------
LU1681046006 CWEm.BS CWEM EB 2
LU1681046006 CWEm.BS CWE EB 2
LU1681046006 CWEm.BS CWEM EB 2
LU1681046006 CWEm.BS CWE EB 2
LU1681046006 CWEm.CHI CWEM IX 2
LU1681046006 CWEm.CHI CWE IX 2
LU1681046006 CWEm.CHI CWEM IX 2
LU1681046006 CWEm.CHI CWE IX 2
LU1681046006 CWE.MI CWE IM
LU1681046006 WDNR.DE WDNR GY
Run Code Online (Sandbox Code Playgroud)
因此,结果表应如下所示:
ISIN RIC BLOOMBERG dup
-----------------------------------
LU1681046006 CWEm.BS CWEM EB 2
LU1681046006 CWEm.BS CWE EB 2
LU1681046006 CWEm.CHI CWEM IX …Run Code Online (Sandbox Code Playgroud) 如何在KDB中使用其子字符串重命名列?
例:
初始表
name | number
------------------
foo/bar | 999
foo/log | 999
foo/ton | 999
foo/tin | 999
Run Code Online (Sandbox Code Playgroud)
name如果是/字符,查询应通过某个定界符截断该列。
结果表1
name | number
------------------
foo | 999
foo | 999
foo | 999
foo | 999
Run Code Online (Sandbox Code Playgroud)
或者删除字符串之间的子字符串,即/字符。
结果表2
name | number
------------------
foobar | 999
foolog | 999
footon | 999
footin | 999
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行以下代码以读取位置C:/ q / BitCoin / Input上所有可用的csv文件。遇到错误并且不知道解决方案是什么?csv文件是具有三个字段的标准文件。
raze{[x]
inputdir:`:C:/q/BitCoin/Input;
filelist1:key inputdir;
filelist2:` sv' inputdir,'filelist1;
filelist3:string filelist2;
r:flip`Time`Qty`Price!("ZFF";",")0:x;
select from r
} each `$filelist3
Run Code Online (Sandbox Code Playgroud)
硬编码文件名并在以下代码下运行可以工作,但我不想硬编码
raze {[x]
r:flip`Time`Qty`Price!("ZFF";",")0:x;
select from r
} each (`$"C:/q/BitCoin/Input/bitbayPLN.csv";`$"C:/q/BitCoin/Input/anxhkAUD.csv")
Run Code Online (Sandbox Code Playgroud)
低于错误
执行查询期间发生错误。服务器发送了响应:filelist3
有人可以帮助解决问题吗?