在不指定列名的情况下使用多列的先前值填充空值
Populate null value with preceding values for multiple columns without specifying column names
我有一个 table 包含 30 多个列,每个列都有相当多的记录空值。
为了用前面的值填充空值,我使用 fills 函数并在 update 语句中指定每个列名,如下所示。 (下面的例子有4列只是为了解释)
trade:([]date:raze 3#enlist .z.d+til 10; ccy:30#`EUR`JPY`AUD; fx:30?(1.0 0.2 0.4 0n); mult:30?(10.1 0n 30.3 0n));
update fills fx, fills mult by ccy from trade;
当涉及到更多的列时,以相同的方式指定每个列名称会变得很麻烦(填充 col1、填充 col2、填充 col3...)。难道我们没有办法更轻松地为 table 的所有列填充空值吗?
非常感谢您的提前帮助!
您可以试试这个功能更新
![trade;();(enlist`ccy)!enlist`ccy;{x!fills,'x}cols trade]
这将向前填充 trade
中的所有列。要更具体地说明您要向前填充哪些列,您可以将这些列保存为变量并像这样使用它们
q)cls:`fx`mult
q)![trade;();(enlist`ccy)!enlist`ccy;{x!fills,'x}cls]
date ccy fx mult
-----------------------
2020.10.25 EUR 1 10.1
2020.10.26 JPY 1 10.1
2020.10.27 AUD 0.2 30.3
2020.10.28 EUR 0.4 10.1
2020.10.29 JPY 0.2 30.3
..
你实际上可以在整体上使用 fills
table 例如
q)fills trade
date ccy fx mult
-----------------------
2020.10.26 EUR 1 10.1
2020.10.27 JPY 1 10.1
2020.10.28 AUD 0.2 30.3
2020.10.29 EUR 0.4 30.3
2020.10.30 JPY 0.2 30.3
2020.10.31 AUD 0.4 30.3
2020.11.01 EUR 0.4 30.3
..
q)sum each null each flip fills trade /check there are no nulls
date| 0
ccy | 0
fx | 0
mult| 0
我有一个 table 包含 30 多个列,每个列都有相当多的记录空值。 为了用前面的值填充空值,我使用 fills 函数并在 update 语句中指定每个列名,如下所示。 (下面的例子有4列只是为了解释)
trade:([]date:raze 3#enlist .z.d+til 10; ccy:30#`EUR`JPY`AUD; fx:30?(1.0 0.2 0.4 0n); mult:30?(10.1 0n 30.3 0n));
update fills fx, fills mult by ccy from trade;
当涉及到更多的列时,以相同的方式指定每个列名称会变得很麻烦(填充 col1、填充 col2、填充 col3...)。难道我们没有办法更轻松地为 table 的所有列填充空值吗?
非常感谢您的提前帮助!
您可以试试这个功能更新
![trade;();(enlist`ccy)!enlist`ccy;{x!fills,'x}cols trade]
这将向前填充 trade
中的所有列。要更具体地说明您要向前填充哪些列,您可以将这些列保存为变量并像这样使用它们
q)cls:`fx`mult
q)![trade;();(enlist`ccy)!enlist`ccy;{x!fills,'x}cls]
date ccy fx mult
-----------------------
2020.10.25 EUR 1 10.1
2020.10.26 JPY 1 10.1
2020.10.27 AUD 0.2 30.3
2020.10.28 EUR 0.4 10.1
2020.10.29 JPY 0.2 30.3
..
你实际上可以在整体上使用 fills
table 例如
q)fills trade
date ccy fx mult
-----------------------
2020.10.26 EUR 1 10.1
2020.10.27 JPY 1 10.1
2020.10.28 AUD 0.2 30.3
2020.10.29 EUR 0.4 30.3
2020.10.30 JPY 0.2 30.3
2020.10.31 AUD 0.4 30.3
2020.11.01 EUR 0.4 30.3
..
q)sum each null each flip fills trade /check there are no nulls
date| 0
ccy | 0
fx | 0
mult| 0