Я работаю над исследованиями, посвященными влиянию снижения кредитного рейтинга на цены облигаций.У меня есть набор данных разных связей с данными за каждый день, поэтому каждая строка состоит из конкретной связи в определенный день.Ниже приведен небольшой фрагмент этой таблицы:
bonds
# A tibble: 6 x 4
ISIN Date Spread Rating_new
<chr> <date> <dbl> <chr>
1 DE000CZ40MC5 ISIN 2017-09-14 0.156 NA
2 DE000CZ40MC5 ISIN 2017-09-15 0.159 NA
3 DE000CZ40MC5 ISIN 2017-09-18 0.185 NA
4 DE000CZ40MC5 ISIN 2017-09-19 0.177 NA
5 DE000CZ40MC5 ISIN 2017-09-20 0.203 A+
6 DE000CZ40MC5 ISIN 2017-09-21 0.235 NA
Во второй таблице я извлек все понижения рейтинга каждой облигации в отдельности, которая выглядит следующим образом:
downgrades
# A tibble: 6 x 4
ISIN Date Spread Rating_new
<chr> <date> <dbl> <chr>
1 XS1636000561 ISIN 2018-05-30 0.356 A3
2 XS1636000561 ISIN 2018-05-30 0.356 Baa1
3 XS1636000561 ISIN 2018-10-23 0.345 Baa2
4 XS1636000561 ISIN 2018-10-23 0.345 Baa1
5 XS1693281617 ISIN 2018-09-20 0.448 A
6 XS1693281617 ISIN 2018-12-21 0.578 Baa2
Идеявыбрать интервал для всех рангов [-30, -1], который обозначает интервал между 30 днями до понижения и 1 днем до понижения.Поэтому я хотел бы выбрать 31 строку для каждого рейтинга и поместить его в отдельную таблицу.До сих пор я попробовал следующее:
interval <- bonds %>% filter((between(Date, downgrades$Date - 30,
downgrades$Date -1)) & ISIN == downgrades$ISIN)
Очень рад любой помощи.С уважением