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

library(dplyr)
library(randomForest)
library(caret)
library(ggplot2)
library(readr)
library(tidyverse)


test_V2 <- read_csv("../input/test_V2.csv")
train_V2 <- read_csv("../input/train_V2.csv")
#because one of four million observations contain an na it is not a problem to omit this one
training <- na.omit(train_V2)
test <- na.omit(test_V2)
rm(test_V2)
rm(train_V2)

set.seed(2017)

cleardf <- training[training$matchType == "solo-fpp",]

cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

solofpp <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]

cleardf <- training[training$matchType == "squad-fpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

squadfpp <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]
cleardf <- training[training$matchType == "squad",]

cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

squad <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]

cleardf <- training[training$matchType == "duo-fpp",]

cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

duofpp <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]


cleardf <- training[training$matchType == "duo",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

duo <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]

cleardf <- training[training$matchType == "solo",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

solo <- cleardf[sample(1:nrow(cleardf),20000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-squad-fpp",]

cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL
nsquadfpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "crashfpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

crashfpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "flarefpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

flarefpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-duo-fpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

nduofpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-squad",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

nsquad <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-solo-fpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

nsolofpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "flaretpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

flaretpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-duo",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

nduo <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "crashtpp",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

crashtpp <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

cleardf <- training[training$matchType == "normal-solo",]
cleardf <- cleardf %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))
cleardf <- cleardf %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))
cleardf$Id = NULL
cleardf$groupId = NULL
cleardf$matchId = NULL
cleardf$matchType = NULL

nsolo <- cleardf[sample(1:nrow(cleardf),2000, replace = TRUE),]

rm(cleardf)
rm(training)

#running all models
rf1 <- randomForest(winPlacePerc ~ .,
                    data = crashfpp, mtry = 10, ntree = 500, importance = TRUE)

rf2 <- randomForest(winPlacePerc ~ .,
                    data = crashtpp, mtry = 10, ntree = 500, importance = TRUE)

rf3 <- randomForest(winPlacePerc ~ .,
                    data = duo, mtry = 10, ntree = 500, importance = TRUE)

rf4 <- randomForest(winPlacePerc ~ .,
                    data = duofpp, mtry = 10, ntree = 500, importance = TRUE)

rf5 <- randomForest(winPlacePerc ~ .,
                    data = flarefpp, mtry = 10, ntree = 500, importance = TRUE)

rf6 <- randomForest(winPlacePerc ~ .,
                    data = flaretpp, mtry = 10, ntree = 500, importance = TRUE)

rf7 <- randomForest(winPlacePerc ~ .,
                    data = nduo, mtry = 10, ntree = 500, importance = TRUE)

rf8 <- randomForest(winPlacePerc ~ .,
                    data = nduofpp, mtry = 10, ntree = 500, importance = TRUE)

rf9 <- randomForest(winPlacePerc ~ .,
                    data = nsolo, mtry = 10, ntree = 500, importance = TRUE)

rf10 <- randomForest(winPlacePerc ~ .,
                    data = nsolofpp, mtry = 10, ntree = 500, importance = TRUE)

rf11 <- randomForest(winPlacePerc ~ .,
                    data = nsquad, mtry = 10, ntree = 500, importance = TRUE)

rf12 <- randomForest(winPlacePerc ~ .,
                    data = squadfpp, mtry = 10, ntree = 500, importance = TRUE)

rf13 <- randomForest(winPlacePerc ~ .,
                    data = solo, mtry = 10, ntree = 500, importance = TRUE)

rf14 <- randomForest(winPlacePerc ~ .,
                    data = solofpp, mtry = 10, ntree = 500, importance = TRUE)

rf15 <- randomForest(winPlacePerc ~ .,
                    data = squad, mtry = 10, ntree = 500, importance = TRUE)

rf16 <- randomForest(winPlacePerc ~ .,
                    data = nsquadfpp, mtry = 10, ntree = 500, importance = TRUE)
test <- test %>%
  group_by(groupId) %>%
  mutate(sumWalkDistance = sum(walkDistance)) %>%
  mutate(sumKillPlace = sum(killPlace)) %>%
  mutate(sumBoosts = sum(boosts)) %>%
  mutate(sumWeaponsAcquired = sum(weaponsAcquired))

test <- test %>%
  group_by(matchId) %>%
  mutate(rankWalkDistance = rank(sumWalkDistance)) %>%
  mutate(rankKillPlace = rank(sumKillPlace)) %>%
  mutate(rankBoosts = rank(sumBoosts)) %>%
  mutate(rankMatchLength = rank(matchDuration)) %>%
  mutate(rankWeaponsAcquired = rank(sumWeaponsAcquired))

m1 <- which(test$matchType == "crashfpp")
m1 <- test[m1,]
m11 <- predict(rf1, newdata = m1)

m2 <- which(test$matchType == "crashtpp")
m2 <- test[m2,]
m22 <- predict(rf2, newdata = m2)

m3 <- which(test$matchType == "duo")
m3 <- test[m3,]
m33 <- predict(rf3, newdata = m3)

m4 <- which(test$matchType == "duo-fpp")
m4 <- test[m4,]
m44 <- predict(rf4, newdata = m4)

m5 <- which(test$matchType == "flarefpp")
m5 <- test[m5,]
m55 <- predict(rf5, newdata = m5)

m6 <- which(test$matchType == "flaretpp")
m6 <- test[m6,]
m66 <- predict(rf6, newdata = m6)

m7 <- which(test$matchType == "normal-duo")
m7 <- test[m7,]
m77 <- predict(rf7, newdata = m7)

m8 <- which(test$matchType == "normal-duo-fpp")
m8 <- test[m8,]
m88 <- predict(rf8, newdata = m8)

m9 <- which(test$matchType == "normal-solo")
m9 <- test[m9,]
m99 <- predict(rf9, newdata = m9)

m10 <- which(test$matchType == "normal-solo-fpp")
m10 <- test[m10,]
m1010 <- predict(rf10, newdata = m10)

mm11 <- which(test$matchType == "normal-squad")
mm11 <- test[mm11,]
mm1111 <- predict(rf11, newdata = mm11)

m12 <- which(test$matchType == "squad-fpp")
m12 <- test[m12,]
m1212<- predict(rf12, newdata = m12)

m13 <- which(test$matchType == "solo")
m13 <- test[m13,]
m1313 <- predict(rf13, newdata = m13)

m14 <- which(test$matchType == "solo-fpp")
m14 <- test[m14,]
m1414 <- predict(rf14, newdata = m14)

m15 <- which(test$matchType == "squad")
m15 <- test[m15,]
m1515 <- predict(rf15, newdata = m15)

m16 <- which(test$matchType == "normal-squad-fpp")
m16 <- test[m16,]
m1616 <- predict(rf16, newdata = m16)

f1 <- data.frame("Id" = m1$Id, "winPlacePerc"=m11)
f2 <- data.frame("Id" = m2$Id, "winPlacePerc"=m22)
f3 <- data.frame("Id" = m3$Id, "winPlacePerc"=m33)
f4 <- data.frame("Id" = m4$Id, "winPlacePerc"=m44)
f5 <- data.frame("Id" = m5$Id, "winPlacePerc"=m55)
f6 <- data.frame("Id" = m6$Id, "winPlacePerc"=m66)
f7 <- data.frame("Id" = m7$Id, "winPlacePerc"=m77)
f8 <- data.frame("Id" = m8$Id, "winPlacePerc"=m88)
f9 <- data.frame("Id" = m9$Id, "winPlacePerc"=m99)
f10 <- data.frame("Id" = m10$Id, "winPlacePerc"=m1010)
f11 <- data.frame("Id" = mm11$Id, "winPlacePerc"=mm1111)
f12 <- data.frame("Id" = m12$Id, "winPlacePerc"=m1212)
f13 <- data.frame("Id" = m13$Id, "winPlacePerc"=m1313)
f14 <- data.frame("Id" = m14$Id, "winPlacePerc"=m1414)
f15 <- data.frame("Id" = m15$Id, "winPlacePerc"=m1515)
f16 <- data.frame("Id" = m16$Id, "winPlacePerc"=m1616)

final <- rbind(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16)

write.csv(final, "submission.csv",row.names = FALSE)
