library(XML) library(lattice) doc = xmlRoot(xmlTreeParse("dt08_189_final_data.xml")) tmp = xmlSApply(doc, function(x) xmlAttrs(x)) tmp = t(tmp) df = data.frame(date=as.Date(tmp[,1]), unempl=as.numeric(tmp[,2]), recession=as.numeric(tmp[,3]), c2=as.numeric(tmp[,4]), c7=as.numeric(tmp[,9]), c8=as.numeric(tmp[,10]), c9=as.numeric(tmp[,11]), c10=as.numeric(tmp[,12]), c11=as.numeric(tmp[,13]), c12=as.numeric(tmp[,14]), c13=as.numeric(tmp[,15]), c14=as.numeric(tmp[,16]), c15=as.numeric(tmp[,17]), c16=as.numeric(tmp[,18])) attach(df) recessionMax = ifelse(date >= as.Date("1948-01-01"), 12*recession, NA) recessionMin = ifelse(date >= as.Date("1948-01-01"), -3*recession, NA) my.panel.superpose.2 = function(x,y, col.line, type, ...) { panel.superpose.2(x,y, col.line=c("#e6e6e6","#e6e6e6","lightgray","red"), type=c("h","h","l","o"), ...) panel.abline(h=0,col="darkgray") } my.panel.lines = function(x,y,...) { keep = !is.na(y) panel.lines(x[keep], y[keep], ...) } my.panel.background.superpose.2 = function(x,y, col.line, type, ...) { panel.superpose.2(x,y, col.line=c("#e6e6e6","lightgray"), type=c("h","l"), ...) } my.panel.background = function(x,y, ...) { my.panel.background.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1962-01-01"), 10.5, "Recessions & Unemployment Rates", font=2, cex=0.8) } mainPlot = xyplot(recessionMax+recessionMin+unempl+c2~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=8)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.superpose.2, panel.groups=my.panel.lines,main=list("Annual Change in Fall Enrollments in Degree-Granting Institutions: 1968 - 2007\nTotal, All Institutions", cex=0.95),sub=list("Shaded background indicates civilian unemployment rates and periods of recession.\n\n\n\n\nFall Enrollments:\nTable 189 at http://nces.ed.gov/programs/digest/d08/tables/dt08_189.asp?referrer=list\nSnyder, T.D., Dillow, S.A., and Hoffman, C.M. (2009). Digest of Education Statistics 2008 (NCES 2009-020).\nNational Center for Education Statistics, Institute of Education Sciences, U.S. Department of Education. Washington, DC.\n\nCivilian Unemployment Rates:\nU.S. Department of Labor, Bureau of Labor Statistics.\nAccessed 2009-07-27 via the API of the Federal Reserve Economic Data (FRED) of the Federal Reserve Bank of St. Louis.\nhttp://api.stlouisfed.org/docs/fred/\n\nRecession Dates:\nNational Bureau of Economic Research.\nAccessed 2009-07-27 via Economic Research at the Federal Reserve Bank of St. Louis.\nhttp://research.stlouisfed.org/fred2/help-faq/#graph_recessions",just=0.5,font=1,cex=0.75),pch=".") backgroundPlot = xyplot(recessionMax+unempl~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=7)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(0:12), xlab=NULL, ylab="Percent", panel=my.panel.background, panel.groups=my.panel.lines,pch=".") my.panel.c2 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Total, All Institutions", font=2, cex=0.8) } c2Plot = xyplot(recessionMax+recessionMin+unempl+c2~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c2, panel.groups=my.panel.lines,pch=".") my.panel.c7 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Total, All Public Institutions", font=2, cex=0.8) } c7Plot = xyplot(recessionMax+recessionMin+unempl+c7~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c7, panel.groups=my.panel.lines,pch=".") my.panel.c8 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Total, Public 4-Year", font=2, cex=0.8) } c8Plot = xyplot(recessionMax+recessionMin+unempl+c8~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c8, panel.groups=my.panel.lines,pch=".") my.panel.c9 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Public 4-Year Universities", font=2, cex=0.8) } c9Plot = xyplot(recessionMax+recessionMin+unempl+c9~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c9, panel.groups=my.panel.lines,pch=".") my.panel.c10 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Public 4-Year Other", font=2, cex=0.8) } c10Plot = xyplot(recessionMax+recessionMin+unempl+c10~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c10, panel.groups=my.panel.lines,pch=".") my.panel.c11 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Public 2-Year", font=2, cex=0.8) } c11Plot = xyplot(recessionMax+recessionMin+unempl+c11~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c11, panel.groups=my.panel.lines,pch=".") my.panel.c12 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Total, All Private Institutions", font=2, cex=0.8) } c12Plot = xyplot(recessionMax+recessionMin+unempl+c12~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c12, panel.groups=my.panel.lines,pch=".") my.panel.c13 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Total, Private 4-Year", font=2, cex=0.8) } c13Plot = xyplot(recessionMax+recessionMin+unempl+c13~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c13, panel.groups=my.panel.lines,pch=".") my.panel.c14 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Private 4-Year Universities", font=2, cex=0.8) } c14Plot = xyplot(recessionMax+recessionMin+unempl+c14~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c14, panel.groups=my.panel.lines,pch=".") my.panel.c15 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Private 4-Year Other", font=2, cex=0.8) } c15Plot = xyplot(recessionMax+recessionMin+unempl+c15~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c15, panel.groups=my.panel.lines,pch=".") my.panel.c16 = function(x,y, ...) { my.panel.superpose.2(x,y, col.line, type, ...) ltext(as.Date("1958-01-01"), 10.5, "Private 2-Year", font=2, cex=0.8) } c16Plot = xyplot(recessionMax+recessionMin+unempl+c16~date, data=df, par.settings=list(fontsize=list(text=10, points=8)), scale=list(tck=c(1,0), x=list(at=c(as.Date("1950-01-01"),as.Date("1960-01-01"),as.Date("1970-01-01"),as.Date("1980-01-01"),as.Date("1990-01-01"),as.Date("2000-01-01"),as.Date("2010-01-01")), labels=c("1950","1960","1970","1980","1990","2000","2010"), tick.number=7), y=list(tick.number=3)), xlim=(as.Date("1947-01-01"):as.Date("2013-01-01")), ylim=(-3:12), xlab=NULL, ylab="Percent", panel=my.panel.c16, panel.groups=my.panel.lines,pch=".") pdf(file="dt08_main.pdf", width=8.5, height=11) print(mainPlot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_background.pdf") print(backgroundPlot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c2.pdf") print(c2Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c7.pdf") print(c7Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c8.pdf") print(c8Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c9.pdf") print(c9Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c10.pdf") print(c10Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c11.pdf") print(c11Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c12.pdf") print(c12Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c13.pdf") print(c13Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c14.pdf") print(c14Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c15.pdf") print(c15Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() pdf(file="dt08_c16.pdf") print(c16Plot, panel.height=list(3,"inches"), panel.width=list(5,"inches")) dev.off() q()