III) Dataset is from Albina Gallyavova’s post on FED CP rates

Attached file has Federal Reserve Board commercial paper rates with essentially several header rows (extract with few . Perhaps, columns should be split and organized by types (financial/non-financial/asset-backed/etc.) and tenor (overnight/7-day/15-day etc.), depending on intention of analysis. Could be useful to look at the patterns in different buckets, perform basic statistical analysis, and estimate future rates.

Loading and getting data in order

library(stringr)
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(reshape2)
## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths
dataset <- read.csv("FRB_CP.csv",stringsAsFactors = FALSE)
dataset[dataset == 'ND'] <- 0
dataset <- na.omit(dataset)
dataset <- dataset[-1:-4,]

Renaming data columns.

names(dataset) <- c("Date","0D-AA-NFC","7D-AA-NFC","15D-AA-NFC","30D-AA-NFC","60D-AA-NFC","90D-AA-NFC","0D-A2-P2-NFC","7D-A2-P2-NFC","15D-A2-P2-NFC","30D-A2-P2-NFC","60D-A2-P2-NFC","90D-A2-P2-NFC","0D-AA-FC","7D-AA-FC","15D-AA-FC","30D-AA-FC","60D-AA-FC","90D-AA-FC","0D-AA-ABC","7D-AA-ABC","15D-AA-ABC","30D-AA-ABC","60D-AA-ABC","90D-AA-ABC")

Seperating ‘data’ to analyze on basis of year.

dataset1  <- dataset %>% 
            separate(Date,into = c("month","day","Year"),sep = "/")
dataset1 <- dataset1[,-1:-2]
dataset1$Year <- as.numeric(dataset1$Year)
head(dataset1)
##    Year 0D-AA-NFC 7D-AA-NFC 15D-AA-NFC 30D-AA-NFC 60D-AA-NFC 90D-AA-NFC
## 6    16      0.36      0.35       0.38       0.42       0.48       0.54
## 7    16      0.35      0.35       0.37       0.42       0.47       0.53
## 8    16      0.36      0.38       0.41       0.43       0.49       0.54
## 9    16      0.37      0.35       0.37        0.4       0.46       0.52
## 10   16      0.37      0.38       0.39       0.41       0.47       0.53
## 11   16      0.36      0.35       0.52       0.42       0.46       0.52
##    0D-A2-P2-NFC 7D-A2-P2-NFC 15D-A2-P2-NFC 30D-A2-P2-NFC 60D-A2-P2-NFC
## 6          0.58         0.69          0.66          0.71          0.86
## 7          0.59         0.66          0.67          0.85          0.83
## 8          0.59         0.65          0.64           0.8          0.85
## 9          0.59         0.64          0.68          0.76           0.8
## 10         0.59         0.64          0.69          0.77          0.92
## 11         0.58         0.63          0.71          0.81          0.94
##    90D-A2-P2-NFC 0D-AA-FC 7D-AA-FC 15D-AA-FC 30D-AA-FC 60D-AA-FC 90D-AA-FC
## 6              0      0.4        0         0         0      0.62      0.87
## 7              0      0.4     0.39       0.4      0.42      0.59      0.76
## 8              1      0.4     0.42      0.45      0.51      0.64      0.77
## 9              0      0.4     0.41      0.42      0.45      0.58      0.73
## 10          1.07      0.4     0.41      0.41      0.43      0.61      0.79
## 11             0      0.4     0.42         0      0.49      0.62      0.84
##    0D-AA-ABC 7D-AA-ABC 15D-AA-ABC 30D-AA-ABC 60D-AA-ABC 90D-AA-ABC
## 6       0.46      0.48       0.52       0.61       0.79       0.95
## 7       0.46      0.48       0.49        0.6        0.7       0.91
## 8       0.46      0.51       0.52       0.63       0.76       0.89
## 9       0.47      0.48       0.53       0.63       0.77       0.92
## 10      0.46      0.51       0.56       0.66       0.73        0.9
## 11      0.47      0.48       0.56       0.57       0.76       0.94

Goruping with respect to year

dataset1 <- data.frame(sapply(dataset1, function(x) as.numeric(as.character(x))))
dataset2 <- dataset1 %>%
      group_by(Year)%>%
         summarise_all(funs(sum))
head(dataset2)
## # A tibble: 2 x 25
##    Year X0D.AA.NFC X7D.AA.NFC X15D.AA.NFC X30D.AA.NFC X60D.AA.NFC
##   <dbl>      <dbl>      <dbl>       <dbl>       <dbl>       <dbl>
## 1    16      29.11      29.44       30.51       34.20       35.54
## 2    17     159.85     158.46      159.23      165.28      167.01
## # ... with 19 more variables: X90D.AA.NFC <dbl>, X0D.A2.P2.NFC <dbl>,
## #   X7D.A2.P2.NFC <dbl>, X15D.A2.P2.NFC <dbl>, X30D.A2.P2.NFC <dbl>,
## #   X60D.A2.P2.NFC <dbl>, X90D.A2.P2.NFC <dbl>, X0D.AA.FC <dbl>,
## #   X7D.AA.FC <dbl>, X15D.AA.FC <dbl>, X30D.AA.FC <dbl>, X60D.AA.FC <dbl>,
## #   X90D.AA.FC <dbl>, X0D.AA.ABC <dbl>, X7D.AA.ABC <dbl>,
## #   X15D.AA.ABC <dbl>, X30D.AA.ABC <dbl>, X60D.AA.ABC <dbl>,
## #   X90D.AA.ABC <dbl>

Graph depicting yearwise change in rates of paper.

dataset3 <- melt(dataset2,id.vars = "Year",measure.vars = grep("^X",names(dataset2),value = TRUE))
ggplot(dataset3,aes(x = variable,y = value,color = as.factor(Year)))+ geom_point() +
      geom_line(aes(group = Year)) +
      coord_cartesian(ylim = c(1, 100)) + coord_flip()

for(i in 1:2) {
  dataset2$total[i] <- rowSums(dataset2[i,2:25],na.rm = TRUE)
}
## Warning: Unknown or uninitialised column: 'total'.

Percentage increase from 2016 to 2017

percent_increase <- (671.13-208.02)/(208.02)
percent_increase*100
## [1] 222.6276
dataset2[3,] = c("Total", colSums(dataset2[,2:26]))
head(dataset2)
## # A tibble: 3 x 26
##    Year X0D.AA.NFC X7D.AA.NFC X15D.AA.NFC X30D.AA.NFC X60D.AA.NFC
##   <chr>      <chr>      <chr>       <chr>       <chr>       <chr>
## 1    16      29.11      29.44       30.51        34.2       35.54
## 2    17     159.85     158.46      159.23      165.28      167.01
## 3 Total     188.96      187.9      189.74      199.48      202.55
## # ... with 20 more variables: X90D.AA.NFC <chr>, X0D.A2.P2.NFC <chr>,
## #   X7D.A2.P2.NFC <chr>, X15D.A2.P2.NFC <chr>, X30D.A2.P2.NFC <chr>,
## #   X60D.A2.P2.NFC <chr>, X90D.A2.P2.NFC <chr>, X0D.AA.FC <chr>,
## #   X7D.AA.FC <chr>, X15D.AA.FC <chr>, X30D.AA.FC <chr>, X60D.AA.FC <chr>,
## #   X90D.AA.FC <chr>, X0D.AA.ABC <chr>, X7D.AA.ABC <chr>,
## #   X15D.AA.ABC <chr>, X30D.AA.ABC <chr>, X60D.AA.ABC <chr>,
## #   X90D.AA.ABC <chr>, total <chr>

I added all rows and columns to calculate Financial,Non-financial and asset blocked rates seperately.depending upon what rates you want one can just add up the columns and take the sum.I primarily focused on how to rates changed within two years which is represented in graph above.