#kdb
#kdb
Вопрос:
У меня есть следующие теноры в строке (преобразованные в символы ниже), полученные из кривой подкачки:
tenors_str : `1d`6m`1y`1y6m`2y`2y6m`3y`3y6m`4y`4y6m`5y`10y`20y`30y6m
Я хотел бы создать функцию для анализа этих теноров и получения соответствующего времени в годах.
Например:
1d
должно быть 1/365.256m
должно быть 0,51y
должно быть 1.01y6m
должно быть 1.510y
должно быть 10.0
Я начал с создания такого словаря:
tenor_to_year:`d`m`y!(165.25;1;1f);
Но тогда я не могу справиться со случаем, когда символу предшествует более 1 цифры d
, m
или y
Ответ №1:
Я думаю, что этот подход охватывает ваши варианты использования:
f:{sum prd each 2 cut d[`$c]^"F"$c:cut[0,where b|prev b:x in raze string key d:tenor_to_year;x]};
q)f each string tenors_str
0.002737851 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 10 20 30.5