Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pres_age <- function() {
- #data
- all_pres <- read.csv2("http://pastebin.com/raw/B0p5fts3", stringsAsFactors=FALSE)
- all_pres[, "birthdate"] <- as.Date(strptime(all_pres[,"birthdate"], "%d.%m.%Y"))
- all_pres[, "inauguration.date"] <- as.Date(strptime(all_pres[,"inauguration.date"], "%d.%m.%Y"))
- all_pres[, "age_at_inauguration"] <- age_at(all_pres[, "birthdate"], all_pres[, "inauguration.date"])
- cand <- read.csv("http://pastebin.com/raw/q8vaN7ix", stringsAsFactors=FALSE, colClasses="character")
- cand[, "birthday"] <- as.Date(strptime(cand[, "birthday"], "%m/%d/%Y"))
- cand[, "inauguration.date"] <- as.Date("2017-01-20", "%Y-%m-%d")
- cand[, "age_at_inauguration"] <- age_at(cand[, "birthday"], cand[, "inauguration.date"])
- #base plot
- plot(x=1, col="white", xlim=c(0.2, 2.8), ylim=c(35,80), ylab="Age at inauguration", xlab="", axes=FALSE)
- axis(2, at=seq(40,70,by=10))
- axis(1, at=c(1,2), labels=c("Democrats", "Republicans"), tick=FALSE)
- #historic
- max_age <- max(all_pres[, "age_at_inauguration"])
- max_idx <- which(all_pres[, "age_at_inauguration"]==max_age)
- abline(h=max_age, col="darkgrey", lwd=1.5)
- text(x=2.8, y=max_age+1, labels=paste(all_pres[max_idx, "name"], collapse="\n"), pos=2, cex=0.6, offset=-1)
- min_age <- min(all_pres[, "age_at_inauguration"])
- min_idx <- which(all_pres[, "age_at_inauguration"]==min_age)
- abline(h=min_age, col="darkgrey", lwd=1.5)
- text(x=2.8, y=min_age+1, labels=paste(all_pres[min_idx, "name"], collapse="\n"), pos=2, cex=0.6, offset=-1)
- mean_age <- mean(all_pres[, "age_at_inauguration"])
- abline(h=mean_age, col="darkgrey", lty="dotted", lwd=1.5)
- text(x=2.8, y=mean_age+1, labels="average", pos=2, cex=0.6, offset=-1)
- # candidates
- set.seed(13)
- col_map <- c(Democrat="blue", Republican="red")
- xpos_map <- c(Democrat=1, Republican=2)
- xpos <- jitter(xpos_map[cand[, "party"]], factor=2)
- points(x=xpos, y=cand[, "age_at_inauguration"], col=col_map[cand[,"party"]], pch=19)
- text(x=xpos, y=cand[, "age_at_inauguration"], col=col_map[cand[,"party"]], labels=cand[,"candidate"], pos=1, cex=0.6)
- }
- age_at <- function(birth, at) {
- if(!length(birth)==length(at)) stop("birth and at need same length")
- if(!inherits(birth, "Date")) stop("birth needs to be a Date")
- if(!inherits(at, "Date")) stop("at needs to be a Date")
- res <- rep(NA, length(birth))
- for (i in seq_along(birth)) res[i] <- length(seq(birth[i], at[i], "years"))-1
- return(res)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement