2025-09-09 17:12:57 -06:00

27 lines
1.4 KiB
R

#A function to extract date from FRED. Assumes the date is either annual or monthly.
FRED_GET <- function(FRED_SERIES_ID,NAME=NA,ST_DATE='1890-01-91',END_DATE=Sys.Date(),ANNUAL_DATA=TRUE){
NAME <- ifelse(is.na(NAME),FRED_SERIES_ID,NAME)
DATA_TIME_FRAME <- ifelse(ANNUAL_DATA,"Annual","Monthly")
URL <- paste0('https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23ebf3fb&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=off&txtcolor=%23444444&ts=12&tts=12&width=827&nt=0&thu=0&trc=0&show_legend=no&show_axis_titles=no&show_tooltip=no&id=',FRED_SERIES_ID,'&scale=left&cosd=',ST_DATE,'&coed=',END_DATE,'&line_color=%230073e6&link_values=false&line_style=solid&mark_type=none&mw=3&lw=3&ost=-99999&oet=99999&mma=0&fml=a&fq=',DATA_TIME_FRAME,'&fam=avg&fgst=lin&fgsnd=2020-02-01&line_index=1&transformation=lin&vintage_date=',END_DATE,'&revision_date=',END_DATE,'&nd=',END_DATE)
DATA <- read_csv(URL)
DATA <- DATA[which(!is.na(DATA[,2] )),]
colnames(DATA)[2] <- NAME
if(ANNUAL_DATA){
colnames(DATA)[1] <- "YEAR"
DATA$YEAR <- year(DATA$YEAR)
}else{
colnames(DATA)[1] <- "DATE"
}
return(DATA)
}
CPI_ADJUST <- function(DATA){
CPI <- FRED_GET("CPIAUCSL") %>% filter(!is.na(CPIAUCSL))
CPI$CPI_ADJ <- as.numeric(CPI[which.max(CPI$YEAR),2])/CPI$CPIAUCSL
CPI <- CPI %>% select(-"CPIAUCSL")
DATA <- DATA %>% left_join(CPI)
DATA[,2] <- DATA[,2]*DATA[,"CPI_ADJ"]
DATA <- DATA%>% select(-"CPI_ADJ")
return(DATA)
}