Kdb 我可以直接加载CCC、CC格式的数字文本吗?(K4)

Kdb 我可以直接加载CCC、CC格式的数字文本吗?(K4),kdb,Kdb,我输入的浮点数存储为1000,50,即小数点替换为逗号。 在K中是否有一个选项可以将这些数字直接加载到浮点数中? 使用时 数据:(“SFF”;,“;”)0:。文件名 当然,我得到了0N,因为这些数字不能被识别为浮点数。 我现在将它们作为字符串加载,并使用ssr-like转换它们 c:.:'.q.ssr'[data;,“;”] 但这是非常缓慢的 有没有一个选项可以让K直接将这些数字以CCC、CC格式作为浮点数加载?普通格式和ccc、cc格式不混合,任何文件都只有其中一种格式。 如果没有,我想一定很

我输入的浮点数存储为1000,50,即小数点替换为逗号。 在K中是否有一个选项可以将这些数字直接加载到浮点数中? 使用时

数据:(“SFF”;,“;”)0:。文件名
当然,我得到了0N,因为这些数字不能被识别为浮点数。 我现在将它们作为字符串加载,并使用ssr-like转换它们
c:.:'.q.ssr'[data;,“;”]
但这是非常缓慢的

有没有一个选项可以让K直接将这些数字以CCC、CC格式作为浮点数加载?普通格式和ccc、cc格式不混合,任何文件都只有其中一种格式。 如果没有,我想一定很容易用“,”替换Q二进制中加载函数所在的某个地方的“.”,以获得加载这些数字的版本。有人试过吗?或者在合理的时间内加载带有这些数字的大文件的任何其他提示

干杯,
Co

如果
ssr'
对于您的任务来说速度较慢,您可能会发现这个小功能很有用:

c2p:{c:-1_sums count each x;p:ss[r:raze x;","];r[p]:".";(0,c) _ r}
更新:替代版本:

c2p:{p:ss[r:raze x;","];r[p]:".";(0,-1_sums count'[x])_r}
它将所有字符串连接成一个长字符串,查找逗号的位置,用句点替换逗号,然后拆分该长字符串:

q)N:1000000
q)s:string[N?100000],'",",'string N?1000

q)\t r1:ssr'[s;",";"."]
4284
q)\t r2:c2p s
242
q)r1~r2
1b

我在想一些像查找(?)与索引/应用相结合的东西

    q)N:1000000
    q)s:string[N?100000],'",",'string N?1000
    q)\ts {s[x;y]:"."}./:flip(til count s;s?\:",")
    967 52972144
    q)s
    "93912.794"
    "57144.788"
    "77809.659"
    "7839.47"
    "6363.523"
    "44761.244"
    "65699.712"

这并不完美,但这是总的想法。我确信有一种更简单的方法…

我不认为有任何方法可以直接解析它。您可以在将文件加载到kdb之前对其进行预处理。我相信一些linux命令/工具可以用点替换逗号,这比加载到kdb并在kdb中执行要快得多。这确实好得多。在这里的系统上,速度要快10倍,但这仍然很好,除非所有的浮点符都符合某种格式(例如,小数点后总是有2位数字),否则在q/k IMHO中你几乎做不到更好的结果