## Importing packages

# This R environment comes with all of CRAN and many other helpful packages preinstalled.
# You can see which packages are installed by checking out the kaggle/rstats docker image: 
# https://github.com/kaggle/docker-rstats

library(tidyverse) # metapackage with lots of helpful functions

## Running code

# In a notebook, you can run a single code cell by clicking in the cell and then hitting 
# the blue arrow to the left, or by clicking in the cell and pressing Shift+Enter. In a script, 
# you can run code by highlighting the code you want to run and then clicking the blue arrow
# at the bottom of this window.

## Reading in files

# You can access files from datasets you've added to this kernel in the "../input/" directory.
# You can see the files added to this kernel by running the code below. 

list.files(path = "../input")

## Saving data

# If you save any files or images, these will be put in the "output" directory. You 
# can see the output directory by committing and running your kernel (using the 
# Commit & Run button) and then checking out the compiled version of your kernel.

## Import the data
inj_data <- read.csv('../input/nfl-playing-surface-analytics/InjuryRecord.csv')
play_data <- read.csv('../input/nfl-playing-surface-analytics/PlayerTrackData.csv')
play_info <- read.csv('../input/nfl-playing-surface-analytics/PlayList.csv')
## Break up the data in the healthy games and games with injuries
all_games <- unique(play_info$GameID)
inj_games <- unique(inj_data$GameID)
healthy_games <- all_games[-which(all_games %in% inj_games)]

## Clean some of the categorical variables for use later
play_info$StadiumType[play_info$Temperature == -999] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Closed Dome"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Dome, closed"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Domed, closed"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Indoor, Roof Closed"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Indoors"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Retr. Roof-Closed"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Retr. Roof - Closed"] <- "Indoor"
play_info$StadiumType[play_info$StadiumType == "Retr. Roof Closed"] <- "Indoor"

play_info$StadiumType[play_info$StadiumType == "Bowl"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Domed, open"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Domed, Open"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Heinz Field"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Indoor, Open Roof"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Open"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Oudoor"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Ourdoor"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Outddors"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Outdoor Retr Roof-Open"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Outdoors"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Outdor"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Outside"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Retr. Roof-Open"] <- "Outdoor"
play_info$StadiumType[play_info$StadiumType == "Retr. Roof - Open"] <- "Outdoor"

levels(play_info$Weather)[which(grepl("Rain",levels(as.factor(play_info$Weather)),fixed=TRUE))] <- "Rain"
levels(play_info$Weather)[which(grepl("rain",levels(as.factor(play_info$Weather)),fixed=TRUE))] <- "Rain"
levels(play_info$Weather)[which(grepl("Shower",levels(as.factor(play_info$Weather)),fixed=TRUE))] <- "Rain"

levels(play_info$Weather)[which(grepl("Snow",levels(as.factor(play_info$Weather)),fixed=TRUE))] <- "Snow"
levels(play_info$Weather)[which(grepl("snow",levels(as.factor(play_info$Weather)),fixed=TRUE))] <- "Snow"

play_info$Temperature[play_info$Temperature==-999] <- mean(play_info$Temperature[play_info$Temperature!=-999])

levels(play_info$PlayType)[which(grepl("Punt",levels(as.factor(play_info$PlayType)),fixed=TRUE))] <- "Return"
levels(play_info$PlayType)[which(grepl("Kickoff",levels(as.factor(play_info$PlayType)),fixed=TRUE))] <- "Return"

levels(play_info$PlayType)[which(grepl("Extra Point",levels(as.factor(play_info$PlayType)),fixed=TRUE))] <- "Kick"
levels(play_info$PlayType)[which(grepl("Field Goal",levels(as.factor(play_info$PlayType)),fixed=TRUE))] <- "Kick"

## SVD for Phase 1
inj_plays <- unique(inj_data$PlayKey[inj_data$PlayKey!=""])
lag_max <- 30;
P <- length(inj_plays);
Av <- matrix(0,lag_max+1,P); As <- matrix(0,lag_max+1,P); Adir <- matrix(0,lag_max+1,P)
for(k in 1:P){
  sing_play_data <- play_data[which(play_data$PlayKey == as.character(inj_plays[k])),]
  N <- nrow(sing_play_data)
  xv <- sing_play_data$s*sin(sing_play_data$dir*pi/180)
  yv <- sing_play_data$s*cos(sing_play_data$dir*pi/180)
  dv <- sqrt((xv[2:N]-xv[1:(N-1)])^2+(yv[2:N]-yv[1:(N-1)])^2)
  ds <- sing_play_data$s[2:(N)]-sing_play_data$s[1:(N-1)]
  dang <- yv/xv; dang[is.nan(dang)] <- 0
  ddir <- atan(dang)
  rv<-acf(dv,lag.max=lag_max,type="covariance",plot=FALSE)
  rs<-acf(ds,lag.max=lag_max,type="covariance",plot=FALSE)
  rdir<-acf(ddir,lag.max=lag_max,type="covariance",plot=FALSE)
  Av[,k] <- rv$acf
  As[,k] <- rs$acf
  Adir[,k] <- rdir$acf
}
Sv <- svd(Av)
Ss <- svd(As)
Sdir <- svd(Adir)

## SVD for Phase 2
s_patterns <- matrix(0,(lag_max+1),length(inj_plays))
dv_patterns <- matrix(0,(lag_max+1),length(inj_plays))
dir_patterns <- matrix(0,(lag_max+1),length(inj_plays))
for(j in 1:length(inj_plays)){
sing_play_data <- play_data[which(play_data$PlayKey == as.character(inj_plays[j])),]
N <- nrow(sing_play_data)
      #xv <- sing_play_data$x[2:(N)]-sing_play_data$x[1:(N-1)]
      #yv <- sing_play_data$y[2:(N)]-sing_play_data$y[1:(N-1)]
      xv <- sing_play_data$s*sin(sing_play_data$dir*pi/180)
      yv <- sing_play_data$s*cos(sing_play_data$dir*pi/180)
      #n <- N-1
      n <- N
      dv <- sqrt((xv[2:n]-xv[1:(n-1)])^2+(yv[2:n]-yv[1:(n-1)])^2)
      ds <- sing_play_data$s[2:(N)]-sing_play_data$s[1:(N-1)]
      ddir <- abs(sin((sing_play_data$dir[2:N]-sing_play_data$dir[1:(N-1)])*pi/180))
      
v4 <- rep(0,N-32); v3 <- rep(0,N-32); d2 <- rep(0,N-32); maxs <- rep(0,N-32); maxdv <- rep(0,N-32)
for(k in 1:(N-32)){
  maxs[k] <- (max(sing_play_data$s[(1+k):(1+lag_max+k)]) - 4.848755)/2.020227
  maxdv[k] <- (max(dv[k:(lag_max+k)]) - 0.5017628)/0.4935381
  rv <- acf(dv[k:(lag_max+k)],lag.max=lag_max,type="covariance",plot=FALSE)
  rd <- acf(ddir[k:(lag_max+k)],lag.max=lag_max,type="covariance",plot=FALSE)
  if(sd(dv[k:(lag_max+k)])>0){
  v3[k] <- (cor(rv$acf,Sv$u[,3]) - 0.001636858)/0.1722944
  v4[k] <- (cor(rv$acf,Sv$u[,4]) - 0.03662055)/0.1869571}
  if(sd(ddir[k:(lag_max+k)])>0){d2[k] <- (cor(rd$acf,Sdir$u[,2]) + 0.8219374)/0.09065627}
  
}
prob <- exp(-8.7375 + 0.8808*maxs + 0.3094*d2 - 0.9219*maxdv -0.3066*v4 + 0.3673*v3 +0.4158*v3*maxdv -0.3917*v4*maxdv)

plot_inds <- which.max(prob):(which.max(prob)+lag_max)

s_patterns[,j] <- sing_play_data$s[plot_inds+1]
dv_patterns[,j] <- dv[plot_inds]
dir_patterns[,j] <- ddir[plot_inds]
}
Ss2 <- svd(s_patterns)
Sv2 <- svd(dv_patterns)
Sdir2 <- svd(dir_patterns)

## Clean all Injured Plays
N_plays <- length(inj_plays)
inj <- rep(1,N_plays); 
v1 <- rep(0,N_plays); v2 <- rep(0,N_plays); v3 <- rep(0,N_plays); v4 <- rep(0,N_plays); v5 <- rep(0,N_plays);
s1 <- rep(0,N_plays); s2 <- rep(0,N_plays); s3 <- rep(0,N_plays); s4 <- rep(0,N_plays); s5 <- rep(0,N_plays);
d1 <- rep(0,N_plays); d2 <- rep(0,N_plays); d3 <- rep(0,N_plays); d4 <- rep(0,N_plays); d5 <- rep(0,N_plays);
#
v12 <- rep(0,N_plays); v22 <- rep(0,N_plays); v32 <- rep(0,N_plays); v42 <- rep(0,N_plays); v52 <- rep(0,N_plays);
s12 <- rep(0,N_plays); s22 <- rep(0,N_plays); s32 <- rep(0,N_plays); s42 <- rep(0,N_plays); s52 <- rep(0,N_plays);
d12 <- rep(0,N_plays); d22 <- rep(0,N_plays); d32 <- rep(0,N_plays); d42 <- rep(0,N_plays); d52 <- rep(0,N_plays);
#
maxs <- rep(0,N_plays); maxdv <- rep(0,N_plays); field <- rep("",N_plays);
# Play Types
return <- rep(0,N_plays); kick <- rep(0,N_plays); rush <- rep(0,N_plays); pass <- rep(0,N_plays);
# Weather
snow <- rep(0,N_plays); rain <- rep(0,N_plays); precipitation <- rep(0,N_plays);
# Stadium
indoor <- rep(0,N_plays); outdoor <- rep(0,N_plays);
# Temp
temperature <- rep(0,N_plays)
# Defense or Offense
defense <- rep(0,N_plays); offense <- rep(0,N_plays); line <- rep(0,N_plays)

for(k in 1:N_plays){
  cur_info <- play_info[which(play_info$PlayKey==as.character(inj_plays[k])),]
  sing_play_data <- play_data[which(play_data$PlayKey == as.character(inj_plays[k])),]
  N <- nrow(sing_play_data)
  #xv <- sing_play_data$x[2:(N)]-sing_play_data$x[1:(N-1)]
  #yv <- sing_play_data$y[2:(N)]-sing_play_data$y[1:(N-1)]
  xv <- sing_play_data$s*sin(sing_play_data$dir*pi/180)
  yv <- sing_play_data$s*cos(sing_play_data$dir*pi/180)
  #n <- N-1
  n <- N
  dv <- sqrt((xv[2:n]-xv[1:(n-1)])^2+(yv[2:n]-yv[1:(n-1)])^2)
  ds <- sing_play_data$s[2:(N)]-sing_play_data$s[1:(N-1)]
  ddir <- abs(sin((sing_play_data$dir[2:N]-sing_play_data$dir[1:(N-1)])*pi/180))
  rv<-acf(dv,lag.max=lag_max,type="covariance",plot=FALSE)
  rs<-acf(ds,lag.max=lag_max,type="covariance",plot=FALSE)
  rdir<-acf(ddir,lag.max=lag_max,type="covariance",plot=FALSE)
  s<- sing_play_data$s
  #
  
  for(j in 1:(N-lag_max-1)){
    v1_cur <- dv[j:(j+lag_max)] %*% Sv2$u[,1]; if(abs(v1_cur)>abs(v12[k])){v12[k]<-v1_cur}
    v2_cur <- dv[j:(j+lag_max)] %*% Sv2$u[,2]; if(abs(v2_cur)>abs(v22[k])){v22[k]<-v2_cur}
    v3_cur <- dv[j:(j+lag_max)] %*% Sv2$u[,3]; if(abs(v3_cur)>abs(v32[k])){v32[k]<-v3_cur}
    v4_cur <- dv[j:(j+lag_max)] %*% Sv2$u[,4]; if(abs(v4_cur)>abs(v42[k])){v42[k]<-v4_cur}
    v5_cur <- dv[j:(j+lag_max)] %*% Sv2$u[,5]; if(abs(v5_cur)>abs(v52[k])){v52[k]<-v5_cur}
    #
    s1_cur <- s[j:(j+lag_max)] %*% Ss2$u[,1]; if(abs(s1_cur)>abs(s12[k])){s12[k]<-s1_cur}
    s2_cur <- s[j:(j+lag_max)] %*% Ss2$u[,2]; if(abs(s2_cur)>abs(s22[k])){s22[k]<-s2_cur}
    s3_cur <- s[j:(j+lag_max)] %*% Ss2$u[,3]; if(abs(s3_cur)>abs(s32[k])){s32[k]<-s3_cur}
    s4_cur <- s[j:(j+lag_max)] %*% Ss2$u[,4]; if(abs(s4_cur)>abs(s42[k])){s42[k]<-s4_cur}
    s5_cur <- s[j:(j+lag_max)] %*% Ss2$u[,5]; if(abs(s5_cur)>abs(s52[k])){s52[k]<-s5_cur}
    #
    d1_cur <- ddir[j:(j+lag_max)] %*% Sdir2$u[,1]; if(abs(d1_cur)>abs(d12[k])){d12[k]<-d1_cur}
    d2_cur <- ddir[j:(j+lag_max)] %*% Sdir2$u[,2]; if(abs(d2_cur)>abs(d22[k])){d22[k]<-d2_cur}
    d3_cur <- ddir[j:(j+lag_max)] %*% Sdir2$u[,3]; if(abs(d3_cur)>abs(d32[k])){d32[k]<-d3_cur}
    d4_cur <- ddir[j:(j+lag_max)] %*% Sdir2$u[,4]; if(abs(d4_cur)>abs(d42[k])){d42[k]<-d4_cur}
    d5_cur <- ddir[j:(j+lag_max)] %*% Sdir2$u[,5]; if(abs(d5_cur)>abs(d52[k])){d52[k]<-d5_cur}
  }
  #
  v1[k] <- cor(rv$acf,Sv$u[,1])
  v2[k] <- cor(rv$acf,Sv$u[,2])
  v3[k] <- cor(rv$acf,Sv$u[,3])
  v4[k] <- cor(rv$acf,Sv$u[,4])
  v5[k] <- cor(rv$acf,Sv$u[,5])
  #
  s1[k] <- cor(rs$acf,Ss$u[,1])
  s2[k] <- cor(rs$acf,Ss$u[,2])
  s3[k] <- cor(rs$acf,Ss$u[,3])
  s4[k] <- cor(rs$acf,Ss$u[,4])
  s5[k] <- cor(rs$acf,Ss$u[,5])
  #
  d1[k] <- cor(rdir$acf,Sdir$u[,1])
  d2[k] <- cor(rdir$acf,Sdir$u[,2])
  d3[k] <- cor(rdir$acf,Sdir$u[,3])
  d4[k] <- cor(rdir$acf,Sdir$u[,4])
  d5[k] <- cor(rdir$acf,Sdir$u[,5])
  maxs[k] <- max(sing_play_data$s)
  maxdv[k] <- max(dv)
  field[k] <- as.character(cur_info$FieldType)
  # Play Types
  if(cur_info$PlayType == "Return"){return[k] <- 1}
  if(cur_info$PlayType == "Kick"){kick[k] <- 1}
  if(cur_info$PlayType == "Rush"){rush[k] <- 1}
  if(cur_info$PlayType == "Pass"){pass[k] <- 1}
  # Weather Types
  if(cur_info$Weather == "Snow"){snow[k] <- 1; precipitation[k] <- 1}
  if(cur_info$Weather == "Rain"){rain[k] <- 1; precipitation[k] <- 1}
  # Stadium Types
  if(cur_info$StadiumType == "Indoor"){indoor[k] <- 1}
  if(cur_info$StadiumType == "Outdoor"){outdoor[k] <- 1}
  # Temperature
  temperature[k] <- cur_info$Temperature
  # Position Types
  cur_pos <- cur_info$PositionGroup
  if(cur_pos=="DB"|cur_pos=="DL"|cur_pos=="LB"){defense[k] <- 1}
  if(cur_pos=="RB"|cur_pos=="OL"|cur_pos=="QB"|cur_pos=="TE"|cur_pos=="WR"){offense[k] <- 1}
  if(cur_pos=="DL"|cur_pos=="OL"){line[k] <- 1}
}
XY <- data.frame(inj=inj,field=as.factor(field),return=return,kick=kick,rush=rush,pass=pass,snow=snow,rain=rain,precipitation=precipitation,indoor=indoor,outdoor=outdoor,defense=defense,offense=offense,line=line)
phase_1 <- data.frame(temperature=temperature,maxs=maxs,maxdv=maxdv,v1=v1,v2=v2,v3=v3,v4=v4,v5=v5,s1=s1,s2=s2,s3=s3,s4=s4,s5=s5,d1=d1,d2=d2,d3=d3,d4=d4,d5=d5)
phase_2 <- data.frame(v12=v12,v22=v22,v32=v32,v42=v42,v52=v52,s12=s12,s22=s22,s32=s32,s42=s42,s52=s52,d12=d12,d22=d22,d32=d32,d42=d42,d52=d52)

## Clean all plays from games without injuries
players <- unique(play_info$PlayerKey)
#t1 <- Sys.time()
for(p in 1:length(players)){
#for(p in 1:1){
  #t1 <- Sys.time()
  print(p)
  player_play_info <- play_info[as.factor(play_info$PlayerKey) == as.character(players[p]),]
  player_plays <- player_play_info$PlayKey
  player_play_data <- play_data[play_data$PlayKey %in% player_plays,]
  player_games <- unique(player_play_info$GameID)
  player_healthy_games <- player_games[which(player_games %in% healthy_games)]
  
for(j in 1:length(player_healthy_games)){

#game_plays <- play_info$PlayKey[which(play_info$GameID %in% healthy_games[j])]
  game_plays <- player_play_info$PlayKey[player_play_info$GameID == as.character(player_healthy_games[j])]
  #t2 <- Sys.time()
game_data <- player_play_data[which(player_play_data$PlayKey %in% game_plays),]
    game_info <- player_play_info[which(player_play_info$PlayKey %in% game_plays),]
#t2<-Sys.time()
    #missing_data <- which(!is.finite(player_play_data$s)|!is.finite(player_play_data$dir))
all_keys <- game_data$PlayKey
#if(length(missing_data)>0){
#all_keys <- all_keys[-which(all_keys %in% game_data$PlayKey[missing_data])]}
keys <- unique(all_keys)
for(k in 1:length(keys)){
  sing_play_data <- game_data[which(all_keys == as.character(keys[k])),]
    cur_info <- game_info[which(game_info$PlayKey == as.character(keys[k])),]
  dur <- max(sing_play_data$time)
  mov <- sd(sing_play_data$s)
    if(dur>=(lag_max/5)&mov!=0&nrow(cur_info)>0&all(is.finite(sing_play_data$s))&all(is.finite(sing_play_data$dir))){
        N <- nrow(sing_play_data)
      #xv <- sing_play_data$x[2:(N)]-sing_play_data$x[1:(N-1)]
      #yv <- sing_play_data$y[2:(N)]-sing_play_data$y[1:(N-1)]
      xv <- sing_play_data$s*sin(sing_play_data$dir*pi/180)
      yv <- sing_play_data$s*cos(sing_play_data$dir*pi/180)
      #n <- N-1
      n <- N
      dv <- sqrt((xv[2:n]-xv[1:(n-1)])^2+(yv[2:n]-yv[1:(n-1)])^2)
      ds <- sing_play_data$s[2:(N)]-sing_play_data$s[1:(N-1)]
      ddir <- abs(sin((sing_play_data$dir[2:N]-sing_play_data$dir[1:(N-1)])*pi/180))
      rv<-acf(dv,lag.max=lag_max,type="covariance",plot=FALSE)
      rs<-acf(ds,lag.max=lag_max,type="covariance",plot=FALSE)
      rdir<-acf(ddir,lag.max=lag_max,type="covariance",plot=FALSE)
      s <- sing_play_data$s
      #
      v12 <- 0; v22 <- 0; v32 <- 0; v42 <- 0; v52 <- 0;
      s12 <- 0; s22 <- 0; s32 <- 0; s42 <- 0; s52 <- 0;
      d12 <- 0; d22 <- 0; d32 <- 0; d42 <- 0; d52 <- 0;
        for(l in 1:(N-lag_max-2)){
          v1_cur <- dv[l:(l+lag_max)] %*% Sv2$u[,1]; if(abs(v1_cur)>abs(v12)){v12<-v1_cur}
          v2_cur <- dv[l:(l+lag_max)] %*% Sv2$u[,2]; if(abs(v2_cur)>abs(v22)){v22<-v2_cur}
          v3_cur <- dv[l:(l+lag_max)] %*% Sv2$u[,3]; if(abs(v3_cur)>abs(v32)){v32<-v3_cur}
          v4_cur <- dv[l:(l+lag_max)] %*% Sv2$u[,4]; if(abs(v4_cur)>abs(v42)){v42<-v4_cur}
          v5_cur <- dv[l:(l+lag_max)] %*% Sv2$u[,5]; if(abs(v5_cur)>abs(v52)){v52<-v5_cur}
          #
          s1_cur <- s[l:(l+lag_max)] %*% Ss2$u[,1]; if(abs(s1_cur)>abs(s12)){s12<-s1_cur}
          s2_cur <- s[l:(l+lag_max)] %*% Ss2$u[,2]; if(abs(s2_cur)>abs(s22)){s22<-s2_cur}
          s3_cur <- s[l:(l+lag_max)] %*% Ss2$u[,3]; if(abs(s3_cur)>abs(s32)){s32<-s3_cur}
          s4_cur <- s[l:(l+lag_max)] %*% Ss2$u[,4]; if(abs(s4_cur)>abs(s42)){s42<-s4_cur}
          s5_cur <- s[l:(l+lag_max)] %*% Ss2$u[,5]; if(abs(s5_cur)>abs(s52)){s52<-s5_cur}
          #
          d1_cur <- ddir[l:(l+lag_max)] %*% Sdir2$u[,1]; if(abs(d1_cur)>abs(d12)){d12<-d1_cur}
          d2_cur <- ddir[l:(l+lag_max)] %*% Sdir2$u[,2]; if(abs(d2_cur)>abs(d22)){d22<-d2_cur}
          d3_cur <- ddir[l:(l+lag_max)] %*% Sdir2$u[,3]; if(abs(d3_cur)>abs(d32)){d32<-d3_cur}
          d4_cur <- ddir[l:(l+lag_max)] %*% Sdir2$u[,4]; if(abs(d4_cur)>abs(d42)){d42<-d4_cur}
          d5_cur <- ddir[l:(l+lag_max)] %*% Sdir2$u[,5]; if(abs(d5_cur)>abs(d52)){d52<-d5_cur}
        }
      #
      v1 <- cor(rv$acf,Sv$u[,1])
      v2 <- cor(rv$acf,Sv$u[,2])
      v3 <- cor(rv$acf,Sv$u[,3])
      v4 <- cor(rv$acf,Sv$u[,4])
      v5 <- cor(rv$acf,Sv$u[,5])
      #
      s1 <- cor(rs$acf,Ss$u[,1])
      s2 <- cor(rs$acf,Ss$u[,2])
      s3 <- cor(rs$acf,Ss$u[,3])
      s4 <- cor(rs$acf,Ss$u[,4])
      s5 <- cor(rs$acf,Ss$u[,5])
      #
      d1 <- cor(rdir$acf,Sdir$u[,1])
      d2 <- cor(rdir$acf,Sdir$u[,2])
      d3 <- cor(rdir$acf,Sdir$u[,3])
      d4 <- cor(rdir$acf,Sdir$u[,4])
      d5 <- cor(rdir$acf,Sdir$u[,5])
      maxs <- max(sing_play_data$s)
      maxdv <- max(dv)
      field <- as.character(cur_info$FieldType)
      play_type <- as.character(cur_info$PlayType)
        inj <- 0
        # Play Types
        return <- 0; kick <- 0; rush <- 0; pass <- 0;
      if(cur_info$PlayType == "Return"){return <- 1}
      if(cur_info$PlayType == "Kick"){kick <- 1}
      if(cur_info$PlayType == "Rush"){rush <- 1}
      if(cur_info$PlayType == "Pass"){pass <- 1}
      # Weather Types
        snow <- 0; precipitation <- 0; rain <- 0;
      if(cur_info$Weather == "Snow"){snow <- 1; precipitation <- 1}
      if(cur_info$Weather == "Rain"){rain <- 1; precipitation <- 1}
      # Stadium Types
        indoor <- 0; outdoor <- 0;
      if(cur_info$StadiumType == "Indoor"){indoor <- 1}
      if(cur_info$StadiumType == "Outdoor"){outdoor <- 1}
      # Temperature
      temperature <- cur_info$Temperature
      # Position Types
      cur_pos <- cur_info$PositionGroup
      defense <- 0; offense <- 0; line <- 0;
      if(cur_pos=="DB"|cur_pos=="DL"|cur_pos=="LB"){defense <- 1}
      if(cur_pos=="RB"|cur_pos=="OL"|cur_pos=="QB"|cur_pos=="TE"|cur_pos=="WR"){offense <- 1}
      if(cur_pos=="DL"|cur_pos=="OL"){line <- 1}
      #
        curXY <- data.frame(inj=inj,field=as.factor(field),return=return,kick=kick,rush=rush,pass=pass,snow=snow,rain=rain,precipitation=precipitation,indoor=indoor,outdoor=outdoor,defense=defense,offense=offense,line=line)
        cur_phase_1 <- data.frame(temperature=temperature,maxs=maxs,maxdv=maxdv,v1=v1,v2=v2,v3=v3,v4=v4,v5=v5,s1=s1,s2=s2,s3=s3,s4=s4,s5=s5,d1=d1,d2=d2,d3=d3,d4=d4,d5=d5)
        
        cur_phase_2 <- data.frame(v12=v12,v22=v22,v32=v32,v42=v42,v52=v52,s12=s12,s22=s22,s32=s32,s42=s42,s52=s52,d12=d12,d22=d22,d32=d32,d42=d42,d52=d52)
        
        XY <- rbind(XY,curXY)
        phase_1 <- rbind(phase_1,cur_phase_1)
        phase_2 <- rbind(phase_2,cur_phase_2)
        
    }
}

#print(t2-t1)
#print(c(p,j,k,sum(dur <= 3),sum(mov==0),t2-t1))
}
  #t2 <- Sys.time()
  #print(t2-t1)
  #print(nrow(XY))
}
nrow(XY)

standardize_mean_p1 <- apply(phase_1,2,mean)
standardize_sd_p1 <- apply(phase_1,2,sd)
for(k in 1:ncol(phase_1)){
  phase_1[,k] <- (phase_1[,k] - mean(phase_1[,k]))/sd(phase_1[,k])
}
standardize_mean_p2 <- apply(phase_2,2,mean)
standardize_sd_p2 <- apply(phase_2,2,sd)
for(k in 1:ncol(phase_2)){
  phase_2[,k] <- (phase_2[,k] - mean(phase_2[,k]))/sd(phase_2[,k])
}
## Save final cleaned data
write.csv(XY, file = "XY.csv",row.names=FALSE)
write.csv(phase_1,file="phase_1.csv",row.names=FALSE)
write.csv(phase_2,file="phase_2.csv",row.names=FALSE)