Nothing
## ----setup, include=FALSE, echo=FALSE-----------------------------------------
knitr::opts_chunk$set(echo = TRUE)
## ----yrSpan-------------------------------------------------------------------
library(Ecdat)
(rngYrs <- range(USGDPpresidents$Year))
## ----csv----------------------------------------------------------------------
getwd()
(csv2 <- dir(pattern='\\.csv$'))
(CPIcsvs <- grep('^USCPI', csv2, value=TRUE))
(CPIcsv <- tail(CPIcsvs, 1))
(GDPcsvs <- grep('^USGDP', csv2, value=TRUE))
(GDPcsv <- tail(GDPcsvs, 1))
if((length(CPIcsv)==1) & (length(GDPcsv)==1)){
Update0 <- TRUE
} else Update0 <- FALSE
## ----read.csv-----------------------------------------------------------------
Update <- FALSE
if(Update0){
str(USCPI <- read.csv(CPIcsv, skip=2))
str(USGDP. <- read.csv(GDPcsv, skip=1))
library(Ecfun)
USGDP <- asNumericDF(USGDP.)
print(rngCPIyrs <- range(USCPI$Year) )
print(rngGDPyrs <- range(USGDP$Year) )
endYr <- max(rngCPIyrs, rngGDPyrs)
if(endYr>rngYrs[2]) print(Update <- TRUE)
}
## ----cy-----------------------------------------------------------------------
if(Update){
rowsNeeded <- (endYr - rngYrs[2])
Nold <- nrow(USGDPpresidents)
iRep <- c(1:Nold, rep(Nold, rowsNeeded))
USGDPp2 <- USGDPpresidents[iRep,]
}
## ----Year---------------------------------------------------------------------
if(Update){
iNew <- (Nold+(1:rowsNeeded))
USGDPp2$Year[iNew] <- ((rngYrs[2]+1):endYr)
rownames(USGDPp2) <- USGDPp2$Year
#
USGDPp2[iNew, -1] <- NA
}
## ----CPI----------------------------------------------------------------------
if(Update){
selCPI <- (USGDPp2$Year %in% USCPI$Year)
if(any(!is.na(USGDPp2[!selCPI, 2]))){
stop('ERROR: There are CPI numbers ',
'in the current USGDPpresidents ',
'that are not in the new. ',
'Manual review required.')
}
USGDPp2$CPI[selCPI] <- USCPI[,2]
}
## ----CPIref-------------------------------------------------------------------
if(Update){
readLines(CPIcsv, n=4)
}
## ----GDPdeflator--------------------------------------------------------------
if(Update){
selGDP <- (USGDPp2$Year %in% USGDP$Year)
#
if(any(!is.na(USGDPp2[!selGDP, 'GDPdeflator']))){
stop('ERROR: There are GDPdeflator numbers ',
'in the current USGDPpresidents ',
'that are not in the new. ',
'Manual review required.')
}
selDefl <- grep('Deflator', names(USGDP))
USGDPp2$GDPdeflator[selGDP] <- USGDP[,selDefl]
print(names(USGDP)[selDefl])
}
## ----pop----------------------------------------------------------------------
if(Update){
selPop <- grep('Population', names(USGDP))
sPop <- (USGDP[,selPop]/1000)
quantile(ePop <- ((USGDPp2$population.K[selGDP] /sPop)-1),
na.rm=TRUE)
}
## ----pop2---------------------------------------------------------------------
if(Update){
USGDPp2$population.K[selGDP] <- sPop
print(names(USGDP)[selPop])
}
## ----GDPperCap----------------------------------------------------------------
if(Update){
if(any(!is.na(USGDPp2[!selGDP, 'readGDPperCapita']))){
stop('ERROR: There are realGDPperCapita numbers ',
'in the current USGDPpresidents ',
'that are not in the new. ',
'Manual review required.')
}
selGDPperC <- grep('Real.GDP.per.c', names(USGDP))
USGDPp2$realGDPperCapita[selGDP] <- USGDP[,selGDPperC]
print(names(USGDP)[selGDPperC])
}
## ----executive----------------------------------------------------------------
if(Update){
exec <- as.character(USGDPp2$executive)
newExec <- 'Biden'
exec[is.na(exec)] <- newExec
lvlexec <- levels(USGDPp2$executive)
if(!(newExec %in% lvlexec))
lvlexec <- c(lvlexec, newexec)
USGDPp2$executive <- ordered(exec, lvlexec)
}
## ----war----------------------------------------------------------------------
if(Update){
war <- as.character(USGDPp2$war)
war[is.na(war)] <- ''
lvlwar <- levels(USGDPp2$war)
USGDPp2$war <- ordered(war, lvlwar)
}
## ----battleDeaths-------------------------------------------------------------
if(Update){
USGDPp2$battleDeaths[iNew] <- 0
#
USGDPp2$battleDeathsPMP <- with(USGDPp2,
1000*battleDeaths/population.K)
}
## ----Keynes-------------------------------------------------------------------
if(Update){
USGDPp2$Keynes[iNew] <- 0
}
## ----xlsx---------------------------------------------------------------------
if(Update){
(xls <- dir(pattern='\\.xlsx$'))
(BLSxls <- grep('^Series', xls, value=TRUE))
}
## ----readBLS------------------------------------------------------------------
library(readxl)
if(Update){
str(BLS <- read_excel(BLSxls, skip=11))
}
## ----AnnUnemp-----------------------------------------------------------------
if(Update){
UNEMP <- as.matrix(BLS[2:13])
str(unemp <- apply(UNEMP, 1, mean))
}
## ----unemp--------------------------------------------------------------------
if(Update){
selU4GDP <- (USGDPp2$Year %in% BLS$Year)
selBLS <- (BLS$Year %in% USGDPp2$Year)
dunemp <- (USGDPp2[selU4GDP, 'unemployment'] -
unemp[selBLS])
cbind(USGDPp2[selU4GDP, c('Year', 'unemployment')],
unemp[selBLS], dunemp)
}
## ----replaceUnemp-------------------------------------------------------------
if(Update){
USGDPp2[selU4GDP, 'unemployment'] <- unemp[selBLS]
USGDPp2$unempSource[iNew] <- USGDPp2$unempSource[
iNew[1]-1]
tail(USGDPp2)
}
## ----ods, eval=FALSE----------------------------------------------------------
# if(Update){
# (odsFile <- dir(pattern='\\.ods'))
# (odsF <- grep('^hstat', odsFile, value=TRUE))
# }
## ----readods, eval=FALSE------------------------------------------------------
# if(Update){
# library(readODS)
# str(hstat <- read_ods(odsF, sheet='Receipts', skip=2))
# }
## ----sortOld, eval=FALSE------------------------------------------------------
# if(Update){
# Hstat <- hstat[!is.na(hstat$Year), 1:3]
# oOld <- order(Hstat$Year)
# head(Hst <- Hstat[oOld, ])
# }
## ----addNewVars, eval=FALSE---------------------------------------------------
# if(Update){
# USGDPp2$fedReceipts <- NA
# USGDPp2$fedOutlays <- NA
# selGDP4Hst <- (USGDPp2$Year %in% Hst$Year)
# USGDPp2[selGDP4Hst, c("fedReceipts", "fedOutlays")] <-
# (Hst[2:3] / 1000)
# USGDPp2[c('Year', 'fedReceipts', 'fedOutlays')]
# }
## ----BudgetFile---------------------------------------------------------------
(xls2 <- dir(pattern='\\.xlsx$'))
if(Update){
(BudgetFiles <- grep('^BUDGET', xls2, value=TRUE))
(BudgetF2_1 <- grep('2-1', BudgetFiles, value=TRUE))
(BudgetFile <- (if(length(BudgetF2_1)>0)
tail(BudgetF2_1, 1) else tail(BudgetFiles, 1)))
}
## ----readBudget---------------------------------------------------------------
if(Update){
Budget <- read_excel(BudgetFile,
sheet='hist01z1', skip=3)
head(Budget)
tail(Budget)
}
## ----drop2--------------------------------------------------------------------
if(Update){
library(Ecfun)
nBudg0 <- nrow(Budget)
iBudg <- sort(seq(to=nBudg0-2, length=40))
str(Budg <- asNumericDF(Budget[iBudg, 1:4]))
tail(Budg)
}
## ----updateBudget-------------------------------------------------------------
if(Update){
selGDP4budg <- (USGDPp2$Year %in% Budg[, 1])
selBudg <- (Budg[, 1] %in% USGDPp2$Year)
dfedR <- (USGDPp2[selGDP4budg, 'fedReceipts']
- Budg[selBudg, 2])
dfedO <- (USGDPp2[selGDP4budg, 'fedOutlays']
- Budg[selBudg, 3])
dfedS <- (USGDPp2[selGDP4budg, 'fedSurplus']
- Budg[selBudg, 4])
tail(cbind(USGDPp2[selGDP4budg, c('Year',
'fedReceipts', 'fedOutlays', 'fedSurplus')],
Budg[selBudg, 2:4], dfedR, dfedO, dfedS), 10)
matplot(cbind(dfedR, dfedO, dfedS), type='l')
}
## ----updateBudget2------------------------------------------------------------
if(Update){
table(sel2017_2024 <- (USGDPp2$Year %in% 2017:2024))
table(s2017_2024 <- (Budg[, 1] %in% 2017:2024))
USGDPp2[sel2017_2024, c('fedReceipts', 'fedOutlays',
'fedSurplus')] <- Budg[s2017_2024, 2:4]
tail(USGDPp2)
}
## ----plotBudget---------------------------------------------------------------
if(Update){
Xlim <- c(1790, max(USGDPp2$Year, na.rm=TRUE))
plot(fedReceipts ~Year, USGDPp2, log='y', type='l',
xlim=Xlim, las=2)
Xlim <- c(1790, max(USGDPp2$Year, na.rm=TRUE))
plot(fedOutlays ~Year, USGDPp2, log='y', type='l',
xlim=Xlim, las=2)
plot(fedSurplus ~Year, USGDPp2, type='l',
xlim=Xlim, las=2)
}
## ----debtData-----------------------------------------------------------------
(csv3 <- dir(pattern='\\.csv$'))
if(Update){
(debtFiles <- grep('^HstDebt', csv3, value=TRUE))
tail(HstDebt <- read.csv(debtFiles))
(HstDebt6 <- head(HstDebt))
tail(USGDPp2[c('Year', 'fedDebt')])
}
## ----debtD--------------------------------------------------------------------
if(Update){
nobs <- nrow(USGDPp2)
(endRows <- seq(nobs, by=-1, length=6))
(dHstDebt6 <- (USGDPp2$fedDebt[endRows]-HstDebt6[, 2]))
}
## ----newDebt------------------------------------------------------------------
if(Update){
(USGDPp2$fedDebt[endRows] <-HstDebt6[, 2])
tail(USGDPp2)
plot(fedDebt ~Year, USGDPp2, type='l', log='y',
xlim=Xlim, las=2)
}
## ----currentGDP---------------------------------------------------------------
if(Update){
selEnd <- (USGDPp2$Year>1843)
currentGDP <- with(USGDPp2[selEnd, ],
1000 * population.K * realGDPperCapita
* GDPdeflator / 100)
plot(USGDPp2$Year[selEnd], currentGDP,
log='y', type='l', las=2)
tail(currentGDP)
}
## ----fedReceipts--------------------------------------------------------------
if(Update){
plot(fedReceipts~Year, USGDPp2[selEnd, ], log='y',
type='l', las=2)
}
## ----fedR_p-------------------------------------------------------------------
if(Update){
fedR_p <- (1e6*USGDPp2$fedReceipts[selEnd] /
currentGDP)
plot(USGDPp2$Year[selEnd], fedR_p, type='l',
las=2, log='y')
matplot(USGDPp2$Year[selEnd],
cbind(USGDPp2$fedReceipts_pGDP[selEnd], fedR_p),
type='l', las=2, log='y')
}
## ----fedR_p2------------------------------------------------------------------
if(Update){
plot(USGDPp2$Year[selEnd],
USGDPp2$fedReceipts_pGDP[selEnd] / fedR_p,
type='l', las=2, log='y')
}
## ----fedR_p3------------------------------------------------------------------
if(Update){
USGDPp2$fedReceipts_pGDP[selEnd] <- fedR_p
tail(USGDPp2)
}
## ----fedO_p-------------------------------------------------------------------
if(Update){
fedO_p <- (1e6*USGDPp2$fedOutlays[selEnd] /
currentGDP)
matplot(USGDPp2$Year[selEnd],
cbind(USGDPp2$fedOutlays_pGDP[selEnd], fedO_p),
type='l', las=2, log='y')
}
## ----fedO_p2------------------------------------------------------------------
if(Update){
plot(USGDPp2$Year[selEnd],
USGDPp2$fedOutlays_pGDP[selEnd] / fedO_p,
type='l', las=2, log='y')
}
## ----fedO_p3------------------------------------------------------------------
if(Update){
USGDPp2$fedOutlays_pGDP[selEnd] <- fedO_p
tail(USGDPp2)
}
## ----fedS_p-------------------------------------------------------------------
if(Update){
fedS_p <- (1e6*USGDPp2$fedSurplus[selEnd] /
currentGDP)
matplot(USGDPp2$Year[selEnd],
cbind(USGDPp2$fedSurplus_pGDP[selEnd], fedS_p),
type='l', las=2)
}
## ----fedS_p2------------------------------------------------------------------
if(Update){
plot(USGDPp2$Year[selEnd],
USGDPp2$fedSurplus_pGDP[selEnd] / fedS_p,
type='l', las=2)
quantile(rSup <- (USGDPp2$fedSurplus_pGDP[selEnd] / fedS_p),
na.rm=TRUE)
}
## ----fedS_p3------------------------------------------------------------------
if(Update){
USGDPp2$fedSurplus_pGDP[selEnd] <- fedS_p
tail(USGDPp2)
}
## ----fedD_p-------------------------------------------------------------------
if(Update){
fedD_p <- (USGDPp2$fedDebt[selEnd] /
currentGDP)
matplot(USGDPp2$Year[selEnd],
cbind(USGDPp2$fedDebt_pGDP[selEnd], fedD_p),
type='l', las=2, log='y')
}
## ----fedD_p2------------------------------------------------------------------
if(Update){
plot(USGDPp2$Year[selEnd],
USGDPp2$fedDebt_pGDP[selEnd] / fedD_p,
type='l', las=2)
}
## ----fedD_p3------------------------------------------------------------------
if(Update){
USGDPp2$fedDebt_pGDP[selEnd] <- fedD_p
tail(USGDPp2)
}
## ----USGDPpresNew-------------------------------------------------------------
if(Update){
USGDPpresidents <- USGDPp2
sel <- !is.na(USGDPpresidents$fedOutlays_pGDP)
plot(100*fedOutlays_pGDP~Year,
USGDPpresidents[sel,], type='l', log='y',
xlab='', ylab='US federal outlays, % of GDP')
abline(h=2:3)
War <- (USGDPpresidents$war !='')
abline(v=USGDPpresidents$Year[War],
lty='dotted', col='light gray')
abline(v=c(1929, 1933), col='red', lty='dotted')
text(1931, 22, 'Hoover', srt=90, col='red')
}
## ----Defecit?-----------------------------------------------------------------
if(Update){
selD <- !is.na(USGDPpresidents$fedSurplus_pGDP)
plot(-100*fedSurplus_pGDP~Year,
USGDPpresidents[sel,], type='l',
xlab='', ylab='US federal deficit, % of GDP')
abline(h=2:3)
abline(v=USGDPpresidents$Year[War],
lty='dotted', col='light gray')
abline(v=c(1929, 1933), col='red', lty='dotted')
text(1931, 22, 'Hoover', srt=90, col='red')
}
## ----inflation----------------------------------------------------------------
if(Update){
selI <- (USGDPpresidents$Year>1789)
quantile(diff(USGDPpresidents$Year[selI]))
}
## ----infl1--------------------------------------------------------------------
if(Update){
infl <- 100*diff(log(USGDPpresidents$CPI[selI]))
yr2 <- USGDPpresidents$Year[selI][-1]
plot(yr2, infl, type='l', las=2)
abline(h=c(-2, 0, 2, 10))
abline(v=USGDPpresidents$Year[War],
lty='dotted', col='light gray')
abline(v=c(1929, 1933), col='red', lty='dotted')
text(1931, 22, 'Hoover', srt=90, col='red')
}
## ----infl2--------------------------------------------------------------------
if(Update){
infl2 <- 100*diff(log(
USGDPpresidents$GDPdeflator[selI]))
plot(yr2, infl2, type='l', las=2)
abline(h=c(-2, 0, 2, 10))
abline(v=USGDPpresidents$Year[War],
lty='dotted', col='light gray')
abline(v=c(1929, 1933), col='red', lty='dotted')
text(1931, 22, 'Hoover', srt=90, col='red')
}
## ----battleDeaths2------------------------------------------------------------
if(Update){
plot(battleDeathsPMP~Year, USGDPpresidents,
type='l', las=2, xlim=Xlim)
abline(h=100)
plot(1+battleDeathsPMP~Year, USGDPpresidents,
type='l', las=2, xlim=Xlim, log='y')
abline(h=100)
abline(v=USGDPpresidents$Year[War],
lty='dotted', col='light gray')
abline(v=c(1929, 1933), col='red', lty='dotted')
text(1931, 22, 'Hoover', srt=90, col='red')
}
## ----save---------------------------------------------------------------------
if(Update){
save(USGDPpresidents, file='USGDPpresidents.rda')
getwd()
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.