У меня есть сводная таблица в Kdb+ со столбцами «Состояние», «Вызов», «Год погашения», «Купонная ставка» и «Рейтинг». Столбцами рейтингов являются AAA, AA+, AA, AA-, которые представляют собой поворотные столбцы со значениями доходности.
Столбец «Состояние» содержит символы типов данных и значения, такие как состояния CA, TX, NY и т. д. Вызываемый столбец имеет символ типа данных и значения Y или N. Столбец «Купонный курс» имеет типы данных float и значения значений 1, 2, 3, 4, 5, 6. Столбец Matureyear имеет типы данных j (длинный) и значения значений 1, 2, 3,…,30. Столбцы AAA, AA+, AA и AA- имеют значения доходности и имеют плавающий тип данных.
Данные:
Я хочу заполнить недостающие значения в столбцах AAA, AA+, AA, AA- для каждой отдельной группы (состояние + возможность отзыва + купонная ставка) для года погашения от 0 до 30.
Я попытался сгенерировать возможные комбинации всех отдельных групп.
// Generate all possible combinations of matureyear (0 to 30) for each group
maxYear: 30;
uniqueKeys: distinct select state, callable, couponrate from data;
// Create a table with all possible combinations
// of state, callable, couponrate, and matureyear
allMatureYears:raze {x cross enlist each til maxYear + 1} each uniqueKeys;
allMatureYears: (allMatureYears[`state];
allMatureYears[`callable];
allMatureYears[`couponrate];
allMatureYears[`matureyear]);
Однако kdb выдает ошибку типа в перекрестной функции.
allMatureYears:distinct select state, callable, couponrate from data;
allMatureYears:update matureyear:count[i]#enlist til maxYear + 1 from allMatureYears
allMatureYears:ungroup allMatureYears
allMatureYears: value flip allMatureYears
Спасибо @rianoc, это помогает создать таблицу со всеми возможными комбинациями.
Можете ли вы решить проблемы с форматированием? Трудно прочитать вопрос как есть.