【问题标题】:Replace first n entries in a column in kdb替换 kdb 列中的前 n 个条目
【发布时间】:2021-03-26 03:10:39
【问题描述】:

如何替换表格前n列的值?

mycol:(1 2 3 4)mycol:(a a 3 4)

提前谢谢你!

【问题讨论】:

    标签: kdb


    【解决方案1】:

    如果您要更新的是 mycol 中的值,那么它们需要与现有值的类型相同。见下文。

    q)t:([]mycol:`$string 1+til 4;mycol2:til 4)
    q)update mycol:`a from t where i<2
    mycol mycol2
    ------------
    a     0
    a     1
    3     2
    4     3
    

    解决这个问题的一种方法是enlistmycol,这样就可以进行任何类型的更新。

    q)t:([]mycol:1+til 4;mycol2:til 4)
    q)update mycol:`a from(update enlist each mycol from t)where i<2
    mycol mycol2
    ------------
    `a    0
    `a    1
    ,3    2
    ,4    3
    q)meta update mycol:`a from(update enlist each mycol from t)where i<2
    c     | t f a
    ------| -----
    mycol |
    mycol2| j
    

    您的问题不清楚您是否希望更改列名或列值。如果是列名,可以使用xcol

    q)(2#`a)xcol([]w:3#til 3;x:3#.Q.a;y:`;z:0N)
    a a y z
    -------
    0 a
    1 b
    2 c
    

    【讨论】:

    • 谢谢凯瑟尔!
    • 为了跟进,我想我要做的是用 null 替换列中的第一个条目,同时保持其余条目相同。我不知道该怎么做
    • 列的类型是什么?
    • 它们是浮动的。我现在才想通。谢谢!!
    • @EmilyWilson 请不要忘记标记答案。
    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多