Выбор строк на основе нескольких условий, включая преобразование даты - PullRequest
0 голосов
/ 22 апреля 2019

Я работаю над исследованиями, посвященными влиянию снижения кредитного рейтинга на цены облигаций.У меня есть набор данных разных связей с данными за каждый день, поэтому каждая строка состоит из конкретной связи в определенный день.Ниже приведен небольшой фрагмент этой таблицы:

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)

Очень рад любой помощи.С уважением

...