# This R environment comes with all of CRAN preinstalled, as well as many other helpful packages
# The environment is defined by the kaggle/rstats docker image: https://github.com/kaggle/docker-rstats
# For example, here's several helpful packages to load in 
library(h2o) # R API is just a library
library(ggplot2) # Data visualization
library(readr) # CSV file I/O, e.g. the read_csv function
library(data.table)
library(Metrics)
library(dplyr)
library(knitr)

h2o.init(nthreads=-1,max_mem_size='8G')  


train = fread("../input/train.csv", select = c("Agencia_ID", "Cliente_ID", "Producto_ID", "Demanda_uni_equil"),
    colClasses=c(Agencia_ID="numeric", Cliente_ID="numeric",Producto_ID="numeric",Demanda_uni_equil="numeric"))

#sample_idx <- sample(nrow(train), nrow(train)*0.6)
#sample_one <- train[sample_idx, ]
#sample_two <- train[-sample_idx, ]

#rm(train, sample_idx)



#attach(sample_one)
attach(train)
median <- train[, median(Demanda_uni_equil)]

group <- train[, median(Demanda_uni_equil),by = .(Agencia_ID,Cliente_ID,Producto_ID)]
setnames(group,"V1","median_demand")
#detach(sample_one)
detach(train)
#rm(sample_one)
rm(train)

#data_model <- as.h2o(group)
#data_model$median_demand[is.na(data_model$median_demand)] <- 8

#rm(group)

#gbm_model <- h2o.gbm(y=4, x=c(1:3), training_frame = data_model, ntrees = 100, learn_rate = 0.1)

test <- fread('../input/test.csv', 
               select = c("id","Agencia_ID" ,"Cliente_ID", "Producto_ID"),
               colClasses=c(Agencia_ID="numeric",Cliente_ID="numeric",Producto_ID="numeric"))

test_group <- merge(test, group, all.x = TRUE,by=c("Agencia_ID" ,"Cliente_ID", "Producto_ID"))
test_group[is.na(median_demand)]$median_demand <- 2
setnames(test_group,"median_demand","Demanda_uni_equil")

write.csv(test_group[,.(id,Demanda_uni_equil)],"submission.csv", row.names = FALSE)

#predict_data<-h2o.merge(x=test,y=data_model,all.x = T)
#predict_data$median_demand[is.na(predict_data$median_demand)] <- 8

#submission <- h2o.cbind(test$id,p)
#colnames(submission) <- c("id","Demanda_uni_equil")
#h2o.exportFile(submission,path="submission.csv") 

#summary(gbm_model)
#group_h2o <- as.h2o(group)
#model_h2o <- as.h2o(sample_two)

#joined_train <- h2o.merge(x=model_h2o,y=group_h2o,all.x = T)
#joined_train$median_demand[is.na(joined_train$median_demand)] <- 0.5

#h2o.rm(group_h2o)
#h2o.rm(model_h2o)

#joined_train



