{"cells":[{"metadata":{"_uuid":"4f33adbe78690350825656a7d3222511fd5b92ec","_execution_state":"idle","trusted":true},"cell_type":"code","source":"## Analysis For Control/larger data set sampling\n\n# This R environment comes with all of CRAN and many other helpful packages preinstalled.\n# You can see which packages are installed by checking out the kaggle/rstats docker image: \n# https://github.com/kaggle/docker-rstats\n\nlibrary(tidyverse)\nlist.files(path = \"../input\")\n\n# Load NGS Data for 2017 week 1-6 ... games control was taken from\n###########################################################################################\nNGS_Data_6 <- read_csv(\"../input/NGS-2017-reg-wk1-6.csv\")\n###########################################################################################\n\n\n\n\n# USER FUNCTION TO CREATE SUMMARY TABLES\n###########################################################################################\nNFL_table <- function(data, desc){\nn <- nrow(desc)                # NUMBER OF ROWS TO ITTERATE\ntbl_out <- data_frame(GSISID1 = rep(0,n)\n                         , GSISID2 = rep(0,n)\n                         , d_start = rep(0,n)\n                         , d_min = rep(0,n)\n                         , time_c = rep(0,n)\n                         , vel_p1 = rep(0,n)\n                         , vel_p2 = rep(0,n)\n                         , angle = rep(0,n))\n  \nfor (itt in 1:n) {\n    tbl_data <- data %>%\n      filter(Season_Year == desc$Season_Year[itt]\n             , GameKey == desc$GameKey[itt]\n             , PlayID == desc$PlayID[itt]\n             , GSISID.x == desc$GSISID[itt]\n             , GSISID.y == desc$GSISID2[itt]) %>%\n      select(Time, GSISID.x, x.x, y.x, dis.x, o.x, dir.x\n             , GSISID.y, x.y, y.y, dis.y, o.y, dir.y,d)\n    \n      # ADD LAG OF 1 TIME UNIT VARIABLES\n    tbl_data <- tbl_data %>%\n      mutate( dp = lag(d, n = 1)\n              , x1p = lag(x.x, n = 1)\n              , y1p = lag(y.x, n = 1)\n              , x2p = lag(x.y, n = 1)\n              , y2p = lag(y.y, n = 1)\n              , tp = lag(Time, n = 1)\n              , op = lag(o.x, n = 1)\n              , dirp = lag(dir.x, n = 1))\n    \n    smd <- sum(which(tbl_data$d < 1))\n    \n    if (smd > 0) {\n      min_d <- min(which(tbl_data$d < 1))\n      temp <- tbl_data %>%\n        filter(d == d[min_d])\n    } else {\n      temp <- tbl_data %>%\n        filter(d== min(d))\n    }\n    \n    tbl_out$GSISID1[itt] <- desc$GSISID[itt]\n    tbl_out$GSISID2[itt] <- desc$GSISID2[itt]\n    if (nrow(temp) > 0) {\n    tbl_out$d_start[itt] <- round(tbl_data$d[1],1)\n    tbl_out$d_min[itt]  <- round(temp$d[1],1)\n    tbl_out$time_c[itt] <- round(as.numeric(temp$Time[1] - tbl_data$Time[1])/10,1)\n    td <- round(as.numeric(temp$Time[1] - temp$tp[1]),1)\n    tbl_out$vel_p1[itt] <- round(sqrt((temp$x.x[1] - temp$x1p[1])^2 + (temp$y.x[1] - temp$y1p[1])^2) / td, 1)\n    tbl_out$vel_p2[itt] <- round(sqrt((temp$x.y[1] - temp$x2p[1])^2 + (temp$y.y[1] - temp$y2p[1])^2) / td, 1)\n    tbl_out$angle[itt] <- round(abs(temp$dir.x[1] - temp$dir.y[1]),0)  \n    }\n}  \nreturn(tbl_out)\n}\n###########################################################################################\n\n\n\n\n# USER FUNCTION TO MAKE CONTROL TABLE\n###########################################################################################\nNFL_Combination <- function(data, plist, i){\n  gp <- data %>%\n      filter(GSISID == plist$GSISID[i]) %>%\n      distinct(GameKey, PlayID,GSISID)\n      \n  data_gp <- data %>%\n     filter(GameKey %in% gp$GameKey\n            , PlayID %in% gp$PlayID\n            , GSISID %in% gp$GSISID)\n    \n  data_merge <- data %>%\n     filter(GameKey %in% gp$GameKey\n            , PlayID %in% gp$PlayID\n            , !(GSISID %in% plist$GSISID[(1:i)-1]))\n   \n  data_combined <- inner_join(data_gp, data_merge\n                               , by = c(\"Season_Year\",\"GameKey\",\"PlayID\",\"Time\"))\n   \n  rm(gp, data_gp, data_merge)\n    \n  data_combined <- data_combined %>%\n     mutate(d = sqrt((x.x-x.y)^2 + (y.x-y.y)^2)) %>%\n    filter(!GSISID.x == GSISID.y) %>%\n    mutate(flag = case_when(d < 1 ~ TRUE, TRUE ~ FALSE))\n  \n  flag <- data_combined %>%\n    filter(flag == TRUE) %>%\n    distinct (Season_Year, GameKey, PlayID, GSISID.y)\n  \n  \n  data_combined <- inner_join(data_combined, flag, by = c('Season_Year', 'GameKey',\n                                                          \"PlayID\", \"GSISID.y\"))\n  \n  \n  ddesc <- data_combined %>%\n    select(Season_Year, GameKey, PlayID, GSISID = GSISID.x, GSISID2 = GSISID.y) %>%\n    distinct(Season_Year, GameKey, PlayID, GSISID, GSISID2)\n  \n  if (nrow(ddesc) > 0) {\n    return_data <- NFL_table(data_combined, ddesc)\n    return(return_data)\n  }\n\n}\n###########################################################################################\n\n\n\n\n\n# Gather All GSN data for all plays and all player contact zone interactions in  \n# Games 1-6 of the 2017 season (control sample) \n###############################################################################################\nNGS_Data_6 <- NGS_Data_6 %>%\n    arrange(Season_Year, GSISID, GameKey, PlayID, Time)\n\nPList <- NGS_Data_6 %>% distinct(GSISID)\n\nn = nrow(PList)\n\npbf <- txtProgressBar(min = 0, max = n, style = 3)\n\nfor (i in 1:n) {\n  ctrl_data <- NFL_Combination(NGS_Data_6, PList, i)\n  ifelse(i == 1,\n      ctrl_play_data <- ctrl_data,\n      ctrl_play_data <- rbind(ctrl_play_data, ctrl_data))\n  rm(ctrl_data)\n  \n  Sys.sleep(0.1)                  # PAUSE FOR PROGRESS BAR TO UPDATE\n  setTxtProgressBar(pbf,i)       # UPDATE PROGRESS BAR\n}\nclose(pbf)\nrm(i,n,pbf)\n###############################################################################################\n\n\n\n\nanalysis_data <- ctrl_play_data %>%\n    mutate(vel_1t = case_when(\n        between(vel_p1,0,3) ~ '0-3',\n        between(vel_p1,3,6) ~ '3-6',\n        between(vel_p1,6,500) ~ '6+',\n        TRUE ~ 'else'\n    ))\n\nanalysis_data <- analysis_data %>%\n    mutate(vel_2t = case_when(\n        between(vel_p2,0,3) ~ '0-3',\n        between(vel_p2,3,6) ~ '3-6',\n        between(vel_p2,6,500) ~ '6+',\n        TRUE ~ 'else'\n    ))\n\n\nanalysis_data <- analysis_data %>%\n    mutate(at = case_when(\n        between(angle,0,60) ~ 'headon',\n        between(angle,300,360) ~ 'headon',\n        between(angle,120,240) ~ 'behind',\n        between(angle,60,120) ~ 'side',\n        between(angle,240,300) ~ 'side',\n        TRUE ~ 'else'\n    ))\n\n\nanalysis_data %>%\n    group_by(vel_1t, vel_2t, at) %>%\n    summarise(n = n()) %>%\n    mutate(pn = n / sum(n))\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}