【问题标题】:Importing text data with variable size separators in kdb在 kdb 中导入具有可变大小分隔符的文本数据
【发布时间】:2013-05-23 17:53:38
【问题描述】:

我想导入一个文本文件,其中的列由可变数量的空格分隔:

A    123
B 222
C  211

运行这个不会很好:

f: ("CI"; " ") 0: `$(":myfile")

【问题讨论】:

    标签: kdb


    【解决方案1】:

    您可以在导入时去掉多余的空格:

    ("CI";" ")0:(ssr[;"  ";" "]/) each read0`:myfile
    
    A   B   C
    123 222 211
    

    不过,这可能会大大减慢速度。

    你能从源头上修复数据吗?为什么会有不同数量的空格?

    【讨论】:

    • 这是一个小文件,这对我很有用。为什么我不需要为大于 2 个字符的空格分隔符运行 ssr?看起来 ssr[;" ";" "] 将所有可变字符分隔符压缩为一个空格。
    • 一个问题,看起来我的真实字段被截断为整数部分:2986.0355 变为 2986f。
    • 第一个问题,请参阅:code.kx.com/wiki/Reference/Slash#converge。您必须提供有关浮点值问题的更多信息。
    • 对于浮动字段,我的记录是"ABC 1945.96640300 A"。通过调用flip ("SFC"; " ") 0: (ssr[;" ";" "]/) each read0 `$(":myfile"),我得到了这个列表:`ABC 1945f "A"。所以我的小数点没了?
    • 我可以复制的唯一方法是将十进制显示精度设置为 4,即\P 4。这只会影响控制台中显示的值,而不影响内部 FP 值。通过将\P 8\P 0 设置为最大值来增加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多