# Cieran Hughes
# 1800730
# Computing
# kickanalysis.r

##### FUNCTIONS #####
GenerateKickSummary<-function(dataF)
{
  # calcuate mean
  kickMeanAir<-mean(dataF[,2])
  kickMeanHelium<-mean(dataF[,3])
  
  # calculate standard devation
  kickSDAir<-sd(dataF[,2])
  kickSDHelium<-sd(dataF[,3])
  
  # calculate medium
  kickMedianAir<-median(dataF[,2])
  kickMedianHelium<-median(dataF[,3])
  
  # calculate max
  kickMaxAir<-max(dataF[,2])
  kickMaxHelium<-max(dataF[,3])
  
  # calculate min 
  kickMinAir<-min(dataF[,2])
  kickMinHelium<-min(dataF[,3])
  
  # calculate range
  kickRangeAir<-kickMaxAir-kickMinAir
  kickRangeHelium<-kickMaxHelium-kickMinHelium
  
  # generating dataframe
  summary<-data.frame(kickMeanAir,
                      kickMeanHelium,
                      kickSDAir,
                      kickSDHelium,
                      kickMedianAir,
                      kickMedianHelium,
                      kickMaxAir,
                      kickMaxHelium,
                      kickMinAir,
                      kickMinHelium,
                      kickRangeAir,
                      kickRangeHelium)
  
  # return dataframe
  return(summary)
}

##### MAIN SCRIPT #####
# import data from files
kickData<-read.csv("Kicks.csv", header=TRUE, stringsAsFactors = FALSE)

# call function to create summary data function
kickSummary<-GenerateKickSummary(kickData)

# shapirp test to test for normality
shapiro.test(kickData[,2])
shapiro.test(kickData[,3])

# box plot to identify outliers
boxplot(kickData[,2],
        main = "Distance travelled when kicking a air filled ball",
        xlab = "Distance",
        ylab = "Kick",
        col = "blue",
        border = "black")
boxplot(kickData[,3],
        main = "Distance travelled when kicking a helium filled ball",
        xlab = "Distance",
        ylab = "Kick",
        col = "blue",
        border = "black")

# clean air kick data by finding the outliners on the boxplot and filtering them out
cleanAirData<-kickData$Air[kickData$Air>16] # filter air data that is less than 16

# clean helunm kick data by finding the outliners on the boxplot and filtering them out
cleanHeliumData<-kickData$Helium[kickData$Helium>22] # filter helium data that is less than 22
cleanHeliumData<-cleanHeliumData[cleanHeliumData<35] # filter helium data that is more than 35
cleanHeliumData

# redo the shapirp test with clean data to test for normality
shapiro.test(cleanAirData)
shapiro.test(cleanHeliumData)

# redo box plot with clean to identify outliers
boxplot(cleanAirData,
        main = "Clean Data \n Distance travelled when kicking a air filled ball",
        xlab = "Distance",
        ylab = "Kick",
        col = "blue",
        border = "black")
boxplot(cleanHeliumData,
        main = "Clean Data \n Distance travelled when kicking a helium filled ball",
        xlab = "Distance",
        ylab = "Kick",
        col = "blue",
        border = "black")

# T test on the clean data
t.test(cleanAirData, cleanHeliumData)

# Experimental Hypotheses:
# To see the differance in the a ball distance when kick when filled with either air or helunm

# Test Result:
# 1.9587

# Null Hypotheses:
# I reject the null hypothese as a differance does exist.

# calaulate if there is a differance in the kickers
JonnyKicks<-NULL
NeilKicks<-NULL

for (c in seq(1:length(kickData[,1])))
{
  if((kickData[c,1] %% 2) == 0) {
    JonnyKicks<-c(JonnyKicks,kickData[c,2],kickData[c,3]) # pass all of Jonnys kicks
  } else {
    NeilKicks<-c(NeilKicks,kickData[c,2],kickData[c,3]) # pass all of Neils kicks
  }
}

# calculate mean of all kicks
JonnyKicksMean<-mean(JonnyKicks)
NeilKicksMean<-mean(NeilKicks)

# calulate differance between averages
kickDifferance<-NeilKicksMean-JonnyKicksMean

# there is a small differance in the kickers, the differance in the averages of the distance is 0.8