library(tidyr)

acs <- rio::import("https://github.com/marctrussler/IDS-Data/raw/main/ACSCountyData.csv")

mean(acs$population)

mean(acs$population[acs$state.abbr=="AL"])

mean(acs$population[acs$state.abbr=="AK"])
mean(acs$population[acs$state.abbr=="AZ"])
mean(acs$population[acs$state.abbr=="AR"])
mean(acs$population[acs$state.abbr=="CA"])
#
#
#
#
mean(acs$population[acs$state.abbr=="WI"])
mean(acs$population[acs$state.abbr=="WY"])

for(i in 1:3){
  #CODE HERE
}

for(i in 1:3){
  print(i)
}

print(1)
print(2)
print(3)

for(batman in 1:3){
  print(batman)
}

# rm(i)
# for(batman in 1:3){
#   print(i)
# }

for(i in 1:50){
  print(i)
}

for(i in c(2,15,45)){
print(i)
}

for(i in 1:3){

  print(i)
  print(i+1)
}

for(i in 1:3){
  mean(acs$population[acs$state.abbr=="AL"])
}

states <- unique(acs$state.abbr)
states

states[1]
states[13]
states[27]

for(i in 1:3){
  mean(acs$population[acs$state.abbr==states[i] ])
}

#What it will literally do
mean(acs$population[acs$state.abbr==states[1]])
mean(acs$population[acs$state.abbr==states[2]])
mean(acs$population[acs$state.abbr==states[3]])


for(i in 1:51){
  mean(acs$population[acs$state.abbr==states[i] ])
}

for(i in 1:length(states)){
  mean(acs$population[acs$state.abbr==states[i] ])
}

state.pop.means <- rep(NA, length(states))

#Ok let's try this:

for(i in 1:length(states)){
state.pop.means <- mean(acs$population[acs$state.abbr==states[i] ])
}
state.pop.means


state.pop.means <- rep(NA, length(states))

for(i in 1:length(states)){
  state.pop.means[i] <- mean(acs$population[acs$state.abbr==states[i] ])
}

cbind(states,state.pop.means)

state.pop.means[1] <- mean(acs$population[acs$state.abbr==states[1] ])
state.pop.means[2] <- mean(acs$population[acs$state.abbr==states[2] ])
state.pop.means[3] <- mean(acs$population[acs$state.abbr==states[3] ])
state.pop.means[4] <- mean(acs$population[acs$state.abbr==states[4] ])
state.pop.means[5] <- mean(acs$population[acs$state.abbr==states[5] ])
state.pop.means[6] <- mean(acs$population[acs$state.abbr==states[6] ])
state.pop.means[7] <- mean(acs$population[acs$state.abbr==states[7] ])
state.pop.means[8] <- mean(acs$population[acs$state.abbr==states[8] ])
state.pop.means[9] <- mean(acs$population[acs$state.abbr==states[9] ])
state.pop.means[10] <- mean(acs$population[acs$state.abbr==states[10] ])
state.pop.means[11] <- mean(acs$population[acs$state.abbr==states[11] ])
state.pop.means[12] <- mean(acs$population[acs$state.abbr==states[12] ])
#
#
state.pop.means[51] <- mean(acs$population[acs$state.abbr==states[51] ])

acs$pop.density.deciles <- dplyr::ntile(acs$population.density, 10)

table(acs$pop.density.deciles)
mean(acs$population.density[acs$pop.density.deciles==1])
mean(acs$population.density[acs$pop.density.deciles==10])

boxplot(acs$population.density ~ acs$pop.density.deciles)

boxplot(acs$population.density ~ acs$pop.density.deciles, outline=F)

dec <-seq(1,10,1)

median.pop <- rep(NA, length(dec))

for(i in 1: length(dec)){
  median.pop[i] <- median(acs$population.density[acs$pop.density.deciles==dec[i]])
}

cbind(dec,median.pop)

coin <- c(0,1)

sample(coin,7,replace=T)

sample(coin,7,replace=T)
sample(coin,7,replace=T)
sample(coin,7,replace=T)

sum(sample(coin,7,replace=T))

for(i in 1:100000){
  sum(sample(coin,7,replace=T))
}

num.heads <- NA
for(i in 1:100000){
 num.heads[i] <-  sum(sample(coin,7,replace=T))
}
head(num.heads)

table(num.heads)
prop.table(table(num.heads))

days <- seq(1,365,1)

bdays <- sample(days, 60, replace=T)

duplicated(c(1,2,3,4,1,5,6))

duplicated(bdays)
any(duplicated(bdays))

result <- rep(NA, 1000)

for(i in 1:1000){
  bdays <- sample(days, 60, replace=T)
  result[i] <- any(duplicated(bdays))
}

table(result)

acs$median.state.pop.density <- NA

#Don't do this:
acs$median.income.std <- NA
for(i in 1:nrow(acs)){
  acs$median.income.std[i] <- acs$median.income[i]/sd(acs$median.income)
}
#Because you can do:
acs$median.income.std <- acs$median.income/sd(acs$median.income)

acs$median.state.pop.density[acs$state.abbr=="AL"] <- median(acs$population.density[acs$state.abbr=="AL"])

states <- unique(acs$state.abbr)


#Is this right? This is what we were doing before.
for(i in 1: length(states)){
  acs$median.state.pop.density[i] <- median(acs$population.density[acs$state.abbr==states[i]])
}

acs$median.state.pop.density[1] <- median(acs$population.density[acs$state.abbr==states[1]])
acs$median.state.pop.density[2] <- median(acs$population.density[acs$state.abbr==states[2]])
acs$median.state.pop.density[3] <- median(acs$population.density[acs$state.abbr==states[3]])
acs$median.state.pop.density[4] <- median(acs$population.density[acs$state.abbr==states[4]])
acs$median.state.pop.density[5] <- median(acs$population.density[acs$state.abbr==states[5]])
acs$median.state.pop.density[6] <- median(acs$population.density[acs$state.abbr==states[6]])

for(i in 1: length(states)){
  acs$median.state.pop.density[acs$state.abbr==states[i]] <- median(acs$population.density[acs$state.abbr==states[i]])
  
}

acs$median.state.pop.density[acs$state.abbr==states[1]] <- median(acs$population.density[acs$state.abbr==states[1]])
acs$median.state.pop.density[acs$state.abbr==states[2]] <- median(acs$population.density[acs$state.abbr==states[2]])
acs$median.state.pop.density[acs$state.abbr==states[3]] <- median(acs$population.density[acs$state.abbr==states[3]])
acs$median.state.pop.density[acs$state.abbr==states[4]] <- median(acs$population.density[acs$state.abbr==states[4]])

cor(acs$population.density, acs$percent.car.commute, use="pairwise.complete")

cor(acs$population.density[acs$state.abbr=="AL"],
    acs$percent.car.commute[acs$state.abbr=="AL"])

states <- unique(acs$state.abbr)
within.state.cor <- rep(NA, length(states))
census.region <- rep(NA, length(states))

for(i in 1:length(states)){
  within.state.cor[i] <- cor(acs$population.density[acs$state.abbr==states[i]],
                             acs$percent.car.commute[acs$state.abbr==states[i]],
                             use="pairwise.complete")
  #Why do I need to use unique here?
  census.region[i] <- unique(acs$census.region[acs$state.abbr==states[i]])
}

cbind(states,within.state.cor, census.region)

st.cor <- cbind.data.frame(states,within.state.cor, census.region)
st.cor <- st.cor[st.cor$states!="DC",]

st.cor <- st.cor[order(st.cor$census.region, st.cor$within.state.cor),]
st.cor

which(st.cor$census.region=="northeast")
which(st.cor$census.region=="south")
which(st.cor$census.region=="west")

plot(1:50, st.cor$within.state.cor, pch=16, ylim=c(-1,1), axes=F,
     xlab="",ylab="Correlation Population Density & Percent Car Commute")
abline(h=0, lty=2, col="gray80")
axis(side=2, at=seq(-1,1,.5), las=2)
axis(side=1, at=1:50, labels=st.cor$states, cex.axis=.5)
abline(v=c(12.5,21.5,37.5), lty=3)
text(c(6,17,29,44), c(1,1,1,1), labels = c("Midwest","Northeast","South","West"))

coin <- c(0,1)
all.heads <- rep(NA, 1000)

flips <- sample(coin, 2, replace=T)
all.heads[1] <- sum(flips)==2


coin <- c(0,1)

all.heads <- rep(NA, 1000)

for(i in 1:1000){
  flips <- sample(coin, 2, replace=T)
  all.heads[i] <- sum(flips)==2
}
mean(all.heads)

all.heads <- rep(NA, 1000)

for(i in 1:1000){
  flips <- sample(coin, 3, replace=T)
  all.heads[i] <- sum(flips)==3
}
mean(all.heads)

all.heads <- rep(NA, 1000)

for(i in 1:1000){
  flips <- sample(coin, 4, replace=T)
  all.heads[i] <- sum(flips)==4
}
mean(all.heads)

num.coins <- seq(2,15,1)
p.all.heads <- rep(NA, length(num.coins))


for(j in 1:length(num.coins)){
  all.heads <- rep(NA, 1000)
  
  for(i in 1:1000){
    flips <- sample(coin, num.coins[j], replace=T)
    all.heads[i] <- sum(flips)==num.coins[j]
  }
  p.all.heads[j] <-mean(all.heads)
}

plot(num.coins, p.all.heads, type="b")

all.heads <- rep(NA, 1000)

#i counts from 1-1000
flips <- sample(coin, num.coins[1], replace=T)
all.heads[1] <- sum(flips)==num.coins[1]
flips <- sample(coin, num.coins[1], replace=T)
all.heads[2] <- sum(flips)==num.coins[1]
flips <- sample(coin, num.coins[1], replace=T)
all.heads[3] <- sum(flips)==num.coins[1]
flips <- sample(coin, num.coins[1], replace=T)
all.heads[4] <- sum(flips)==num.coins[1]
flips <- sample(coin, num.coins[1], replace=T)
all.heads[5] <- sum(flips)==num.coins[1]
#
#
#
flips <- sample(coin, num.coins[1], replace=T)
all.heads[1000] <- sum(flips)==num.coins[1]

#Save result  
p.all.heads[1] <-mean(all.heads)

all.heads <- rep(NA, 1000)

#i counts from 1-1000
flips <- sample(coin, num.coins[2], replace=T)
all.heads[1] <- sum(flips)==num.coins[2]
flips <- sample(coin, num.coins[2], replace=T)
all.heads[2] <- sum(flips)==num.coins[2]
flips <- sample(coin, num.coins[2], replace=T)
all.heads[3] <- sum(flips)==num.coins[2]
flips <- sample(coin, num.coins[2], replace=T)
all.heads[4] <- sum(flips)==num.coins[2]
flips <- sample(coin, num.coins[2], replace=T)
all.heads[5] <- sum(flips)==num.coins[2]
#
#
#
flips <- sample(coin, num.coins[2], replace=T)
all.heads[1000] <- sum(flips)==num.coins[2]

#Save result  
p.all.heads[2] <-mean(all.heads)

acs <- rio::import("https://github.com/marctrussler/IDS-Data/raw/main/ACSCountyData.csv")
names(acs)

mean(acs[acs$state.abbr=="AL", "population"])

vars <- names(acs)[9:28]
vars

states <- unique(acs$state.abbr)
states

i<- 1
mean(acs[acs$state.abbr==states[i], vars[i]])

mean(acs[acs$state.abbr==states[1], vars[1]])
mean(acs[acs$state.abbr==states[2], vars[2]])

for(i in 1:length(states)){
  mean(acs[acs$state.abbr==states[i], "population"], na.rm=T)
}


for(i in 1:length(states)){
  mean(acs[acs$state.abbr==states[i], "population.density"], na.rm=T)
}


for(i in 1:length(states)){
  mean(acs[acs$state.abbr==states[i], "percent.senior"], na.rm=T)
}

for(j in 1: length(vars)){
  for(i in 1:length(states)){
    mean(acs[acs$state.abbr==states[i], vars[j]], na.rm=T)
  }
}

state.demos <- matrix(NA, nrow=length(states), ncol=length(vars))

for(i in 1:length(states)){
  state.demos[i,1] <-  mean(acs[acs$state.abbr==states[i], vars[1]], na.rm=T)
}


for(i in 1:length(states)){
  state.demos[i,2] <-  mean(acs[acs$state.abbr==states[i], vars[2]], na.rm=T)
}


for(i in 1:length(states)){
  state.demos[i,3] <-  mean(acs[acs$state.abbr==states[i], vars[3]], na.rm=T)
}

for(j in 1: length(vars)){
  
  for(i in 1:length(states)){
    state.demos[i,j] <-  mean(acs[acs$state.abbr==states[i], vars[j]], na.rm=T)
  }
  
}

state.demos <- cbind.data.frame(states,state.demos)

names(state.demos)[2:21] <- vars

state.demos2 <- matrix(NA, nrow=length(states), ncol=length(vars))


for(i in 1: length(states)){
  
  for(j in 1:length(vars)){
    state.demos2[i,j] <-  mean(acs[acs$state.abbr==states[i], vars[j]], na.rm=T)
  }
  
}

state.demos2 <- cbind.data.frame(states,state.demos2)

names(state.demos2)[2:21] <- vars

x <- rio::import("https://github.com/marctrussler/IDS-Data/raw/main/MITElectionDataPres0016.Rds")
head(x)

x$candidate <- NULL
elect <- pivot_wider(x,
                names_from="party",
                values_from="candidatevotes")
keep <- c("year","state","county","FIPS","democrat","totalvotes")
elect <- elect[keep]
elect.all <- elect
head(elect.all)

sum(elect.all$democrat[elect.all$state=="Alabama" & elect.all$year==2000])/sum(elect.all$totalvotes[elect.all$state=="Alabama" & elect.all$year==2000])


states <- unique(elect.all$state)

for(i in 1:length(states)){
  sum(elect.all$democrat[elect.all$state==states[i] & elect.all$year==2000])/sum(elect.all$totalvotes[elect.all$state==states[i] & elect.all$year==2000])
}

years <- unique(elect.all$year)
states <- unique(elect.all$state)

for(j in 1:length(years)){
  for(i in 1:length(states)){
    sum(elect.all$democrat[elect.all$state==states[i] & elect.all$year==years[j]])/sum(elect.all$totalvotes[elect.all$state==states[i] & elect.all$year==years[j]])
  }
}


years <- unique(elect.all$year)
states <- unique(elect.all$state)
result <- matrix(NA, nrow = length(states), ncol=length(years))

for(j in 1:length(years)){
  for(i in 1:length(states)){
    result[i,j] <- sum(elect.all$democrat[elect.all$state==states[i] & elect.all$year==years[j]],na.rm=T)/sum(elect.all$totalvotes[elect.all$state==states[i] & elect.all$year==years[j]],na.rm=T)
  }
}
result

