带有空格的kdb Q列名

时间:2014-02-20 00:57:00

标签: csv kdb q-lang

我正在将csv文件导入到表中,但是某些列的名称中包含空格。 反正这个还是我需要在导入之前重命名列?

4 个答案:

答案 0 :(得分:1)

将CSV数据读入表格后,您可以使用xcol重命名列。

答案 1 :(得分:1)

从表t中的列名中删除空格:

t:xcol[`$ssr[;" ";""]each string cols t;t]

答案 2 :(得分:0)

如果您想要一般性地清理列名,下面的cleancols函数可能很有用

rmbad:{`$string[x] inter\: .Q.an} //remove bad characters
//make sure first elem is a char
inichar:{`$@[s; where in[ ;.Q.n] first each s:string x;"c",]} 
//rename duplicates
dupes:{@[x;g n;:;`$string[n],/:'string til each gc n:where 1<gc:count each g:group x]}
cleancols:dupes inichar rmbad cols@ //clean column names

cleancols[x] xcol x:flip (`$("bad*";"ba;d*"))!5 cut til 10
cleancols[x] xcol x:flip (`$("ok1";"1&*   (ba;d*"))!5 cut til 10

答案 3 :(得分:0)

.Q.id将删除所有非字母数字字符,并且会重命名任何干扰q命名空间的列。

示例:

q)flip(`$("a b c";"d e f";"name©"))!3#()
a b c d e f name©
------------------

使用.Q.id

q).Q.id flip(`$("a b c";"d e f";"name©"))!3#()
abc def name
------------

可以在code.kx.com找到更多信息。