У меня есть таблица со столбцами «Состояние», «Вызов», «Купонная ставка», «Год погашения», «Рейтинг», «Доходность».
Столбец штата содержит строковые значения, такие как штаты CA, TX, NY и т. д. Callable имеет два строковых значения Y или N. Купонная ставка имеет плавающие значения 1, 2, 3, 4, 5, 6. Matureyear имеет значения 1, 2, 3,…, 30 как целые числа. Рейтинг имеет строковые значения AA+, AA- и т.д. и выход имеет значения с плавающей запятой в качестве доходности.
Данные:
Государство | Звонимый | Купонный курс | Год зрелости | Рейтинг | урожай
МА | Ю | 1 | 2 | АА+ | 4.34 Калифорния | Н | 5 | 5 | АА- | 4,64 Техас | Ю | 3 | 10 | ААА | 4.24 ПА | Н | 4 | 5 | АА | 4.34 Нью-Йорк | Н | 5 | 5 | АА- | 4,64 Техас | Н | 5 | 10 | ААА | 4.24
Теперь я хочу свести данные на основе столбцов рейтинга.
При повороте, Индекс должен быть государственным, отзывным, купонным и годом погашения. столбцы = рейтинг и значения = значения доходности.
PivotedData должен выглядеть так, как показано ниже.
Государство | Звонимый | Купонный курс | Год зрелости | ААА | АА+ | АА | АА-
МА | Ю | 1 | 2 | | 4.34 | |
Калифорния | Н | 5 | 5 | | | |4,64
Техас | Ю | 3 | 10 | 4.24 | | |
ПА | Н | 4 | 5 | | | 4.34 |
Нью-Йорк | Н | 5 | 5 | | | | 4,64
Техас | Н | 5 | 10 | 4.24 | | |
Я использовал приведенный ниже запрос, но он, похоже, не работает, и я получаю сообщение об ошибке для каждой части [каждого рейтинга]
//Поворот таблицы
PivotedTable: доходность исполнительных облигаций по штатам, отзывам, ставке купона, году погашения, рейтингу из таблицы; PivotedTable: выполнить каждый[рейтинг]!значение каждого[каждого рейтинга] по состоянию, вызываемому, ставке купона, году погашения из PivotedTable;





Если ваши строковые столбцы на самом деле являются строками, они, вероятно, должны быть символами (облегчает поворот). Итак, предполагая
q)show t:([]State:`MA`CA`TX`PA`NY`TX;Callable:`Y`N`Y`N`N`N;Couponrate:1 5 3 4 5 5f;Matureyear:2 5 10 5 5 10i;Rating:`$("AA+";"AA-";"AAA";"AA";"AA-";"AAA");yield:4.34 4.64 4.24 4.34 4.64 4.24)
State Callable Couponrate Matureyear Rating yield
-------------------------------------------------
MA Y 1 2 AA+ 4.34
CA N 5 5 AA- 4.64
TX Y 3 10 AAA 4.24
PA N 4 5 AA 4.34
NY N 5 5 AA- 4.64
TX N 5 10 AAA 4.24
затем
q)P:exec distinct Rating from t;
q)exec P#Rating!yield by State,Callable,Couponrate,Matureyear from t
State Callable Couponrate Matureyear| AA+ AA- AAA AA
------------------------------------| -------------------
CA N 5 5 | 4.64
MA Y 1 2 | 4.34
NY N 5 5 | 4.64
PA N 4 5 | 4.34
TX N 5 10 | 4.24
TX Y 3 10 | 4.24
согласно https://code.kx.com/q/kb/pivoting-tables/
Спасибо @terrylynch за вашу помощь. Ваше решение работает очень хорошо.