提问人:mmv456 提问时间:11/7/2023 最后编辑:mmv456 更新时间:11/7/2023 访问量:54
kdb/q 如何将列表附加到表中?
kdb/q How to append a list to a table?
问:
我有一张这样的表格:
名称Table
名字 | 包括 |
---|---|
安 | 1 |
鲍勃 | 0 |
猫 | 1 |
我有一个函数可以从包含的?列:
// get the bits
fGetBits:{[nameTable]
nameTable: select Included from nameTable;
//BitsTable
value flip nameTable}
这将返回类型为 0h 的以下内容:
1 0 1
我的问题是,我怎样才能将这个 0h 列表添加回 nameTable 表的 Included 列,替换当前值?
例如,如果我有以下内容:
0 1 1
我希望我的表现在看起来像这样:
名字 | 包括 |
---|---|
安 | 0 |
鲍勃 | 1 |
猫 | 1 |
感谢您的帮助。
答:
3赞
rianoc
11/7/2023
#1
这个问题有点难以理解,但是:
- 如果要将单个列提取为列表,请使用
exec
- https://code.kx.com/q/ref/exec/
- 或者干脆索引
tableName[`columnName]
- 您可以使用就地同化更新列中的值
- https://code.kx.com/q/ref/assign/
tableName[columnName]:newListValues
q)nameTable:([] Name:`Ann`Bob`Cat;Included:101b)
q)nameTable
Name Included
-------------
Ann 1
Bob 0
Cat 1
q)exec Included from nameTable
101b
q)type exec Included from nameTable
1h
q)nameTable[`Included]:011b
q)nameTable
Name Included
-------------
Ann 0
Bob 1
Cat 1
q)
评论
0赞
mmv456
11/7/2023
哇,这太棒了。我不知道 exec,但这似乎比我上面尝试做的要好得多,而且它实际上返回了一个列表类型(而不是对我来说是 0h)。非常感谢您的帮助。
2赞
terrylynch
11/7/2023
#2
另外值得一提的是一个简单的声明 https://code.kx.com/q/ref/update/update
q)update Included:011b from([] Name:`Ann`Bob`Cat;Included:101b)
Name Included
-------------
Ann 0
Bob 1
Cat 1
评论