(q / kdb +) Разделить строковый столбец на плавающие столбцы - PullRequest
3 голосов
/ 22 марта 2019

Каков наилучший способ разбить столбец строки b

t:([]a:3,4,5;b:("45 | 37 <> 5 | 6";"67 | 981 <> 50 | 7";"1 | 71 <> 15 | 8"))

a   b
3   "45 | 37 <> 5 | 6"
4   "67 | 981 <> 50 | 7"
5   "1 | 71 <> 15 | 8"

, чтобы получить это

a   b                     c     d    e   f
3   "45 | 37 <> 5 | 6"    45    37   5   6
4   "67 | 981 <> 50 | 7"  67    981  50  7
5   "1 | 71 <> 15 | 8"    1     71   15  8

Я пытался что-то вроде

update c:"F"${2#x}each b,d:"F"${4_7#x}each b from t

это работает по частям, но это не похоже на правильный путь.

1 Ответ

2 голосов
/ 22 марта 2019

Вы можете попробовать что-то вроде этого:

q)t,'flip exec `c`d`e`f!("H H H H";" ")0:b from t
a b                    c  d   e  f
----------------------------------
3 "45 | 37 <> 5 | 6"   45 37  5  6
4 "67 | 981 <> 50 | 7" 67 981 50 7
5 "1 | 71 <> 15 | 8"   1  71  15 8

Предполагается, что числа всегда разделены пробелом и между ними всегда есть нежелательные символы.

...