playtrack <- data.table::fread("../input/nfl-playing-surface-analytics/PlayerTrackData.csv", stringsAsFactors = F) 
pkey<-as.factor(playtrack$PlayKey)
x1<-ifelse(playtrack$time==0 , playtrack$x[playtrack$`playtrack$time`==0.0]<-0 ,playtrack$x - lag(playtrack$x, default = first(playtrack$x)) )
y1<-ifelse(playtrack$time==0 , playtrack$y[playtrack$`playtrack$time`==0.0]<-0 ,playtrack$y - lag(playtrack$y, default = first(playtrack$y)) )
t1<-ifelse(playtrack$time==0, 0, playtrack$time - lag(playtrack$time, default = first(playtrack$time)))
vx<-(x1/t1)
vy<-y1/t1
velocity<-sqrt(((vx^2) +(vy^2)))
play_track1<-cbind.data.frame(t1, vx, vy)
dvx<-play_track1$vx - lag(play_track1$vx, default = first(play_track1$vx)) 
dvy<-play_track1$vy - lag(play_track1$vy, default = first(play_track1$vy)) 
accx<-dvx/t1
accy<-dvy/t1
acceleration<-sqrt((accx^2)+(accy^2))
vdir<-atan(vy/vx)
library(REdaS)
vdir1<-rad2deg(vdir)
accdir<-atan(accy/accx)
accdir1<-rad2deg(accdir)
sum(is.na(vdir1))
vdir1[is.na(vdir1)]<-0.0001
sum(vdir1 == 0.0001)
sum(is.na(accdir1))
accdir1[is.na(accdir1)]<-0.0001
sum(accdir1 == 0.0001)
vdir1[vdir1<0]<- vdir1[vdir1<0]+180
vdir1[vdir1==0.0001]<- NA
sum(is.na(vdir1))
accdir1[accdir1<0]<- accdir1[accdir1<0]+180
accdir1[accdir1==0.0001]<- NA
sum(is.na(accdir1))
vdir_ch<-ifelse(vacc$t1==0 , vacc$vdir1[vacc$t1==0.0]<-0 ,vacc$vdir1 - lag(vacc$vdir1, default = first(vacc$vdir1)) )
accdir_ch<-ifelse(vacc$t1==0 , vacc$accdir1[vacc$t1==0.0]<-0 ,vacc$accdir1 - lag(vacc$accdir1, default = first(vacc$accdir1)) )
vacc<-cbind.data.frame(t1, vdir1, accdir1)
vacc1<-cbind.data.frame(pkey, vdir_ch, accdir_ch)
aver_vdir<-vacc1%>%group_by(pkey)%>%summarise(mean = mean(vdir_ch, na.rm = T))
aver_accdir<-vacc1%>%group_by(pkey)%>%summarise(mean = mean(accdir_ch, na.rm = T))

vxyk<-cbind.data.frame(pkey,vx,vy)
aver_vx<-vxyk%>%group_by(pkey)%>%summarise(mean = mean(vx, na.rm = T))
aver_vy<-vxyk%>%group_by(pkey)%>%summarise(mean = mean(vy, na.rm = T))
accvx<-cbind.data.frame(pkey,accx,accy )
aver_accx<-accvx%>%group_by(pkey)%>%summarise(mean = mean(accx, na.rm = T))
aver_accy<-accvx%>%group_by(pkey)%>%summarise(mean = mean(accy, na.rm = T))
accx1<-tapply(accx, pkey, mean, na.rm =T)
v<-sqrt((aver_vx[,2]^2)+(aver_vy[,2]^2))
acc<-sqrt((aver_accx[,2]^2) + (aver_accy[,2]^2))
v_dir<-atan(aver_vy[,2]/aver_vx[,2])
library(REdaS)
v_dir1<-rad2deg(v_dir)
acc_dir<-atan(aver_accy[,2]/aver_accx[,2])
acc_dir1<-rad2deg(acc_dir)
v_dir1[is.na(v_dir1),]<-0
v_dir1[v_dir1<0,]<- v_dir1[v_dir1<0,]+180
v_dir1[v_dir1==0,]<- NA
 sum(is.na(v_dir1))
acc_dir1[acc_dir1<0,]<-acc_dir1[acc_dir1<0,]+180 
dist<-tapply(playtrack$dis,pkey, sum)
dir.change<-tapply(playtrack$dir, pkey, mean)
or.change<-tapply(playtrack$o, pkey, mean)

t<-tapply(playtrack$time, pkey, max)
playtrack1<-cbind.data.frame(t,v,acc,dist,dir.change, or.change)
colnames(playtrack1)<-c("time", "velocity","acceleration","dis", "dir", "orient")
playtrack2<-mutate(playtrack1, pkey)
dir1<-ifelse(playtrack$time==0 , playtrack$dir[playtrack$`playtrack$time`==0.0]<-0 ,playtrack$dir - lag(playtrack$dir, default = first(playtrack$dir)) )
o1<-ifelse(playtrack$time==0 , playtrack$o[playtrack$`playtrack$time`==0.0]<-0 ,playtrack$o - lag(playtrack$o, default = first(playtrack$o)) )
dir_o<-cbind.data.frame(pkey, dir1, o1)
aver_dir<-dir_o%>%group_by(pkey)%>%summarise(mean = mean(dir1, na.rm = T))
aver_o<-dir_o%>%group_by(pkey)%>%summarise(mean = mean(o1, na.rm = T))
playtrack3<-cbind.data.frame(playtrack2, v_dir1,acc_dir1)
playtrack4<-cbind.data.frame(playtrack3[,c(1:4,7,8,9)], aver_dir[,2], aver_o[,2])
playdata3<-cbind.data.frame(playlist4, aver_vdir[,2], aver_accdir[,2])
colnames(playdata3)<-c("time", "velocity","acceleration","dis", "playkey1", "v_dirr", "acc_dirr", "aver_dir", "aver_orient", "vdir_ch", "accdir_ch")
write.table(playdata3, file = "tracklist2.csv", sep = ",")
