# 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(ggplot2) # Data visualization
library(readr) # CSV file I/O, e.g. the read_csv function

# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory

system("ls ../input")

# Any results you write to the current directory are saved as output.

library(data.table)
library(plyr)
train <- fread('../input/train.csv', 
               select = c('Cliente_ID', 'Producto_ID', 'Demanda_uni_equil'),
               colClasses=c(Cliente_ID="numeric",Producto_ID="numeric",Demanda_uni_equil="numeric"))
head(train)
sapply(train, class)
setkey(train, Producto_ID, Cliente_ID)
median <- train[, median(Demanda_uni_equil)]
median_Prod <- train[, median(Demanda_uni_equil), by = Producto_ID]
setnames(median_Prod,"V1","M2")
median_Client_Prod <- train[, median(Demanda_uni_equil),by = .(Producto_ID,Cliente_ID)]
setnames(median_Client_Prod,"V1","M3")
test <- fread('../input/test.csv', 
              select = c('id','Cliente_ID', 'Producto_ID'),
              colClasses=c(Cliente_ID="numeric",Producto_ID="numeric"))
head(test)
sapply(test, class)
setkey(test, Producto_ID, Cliente_ID)
submit <- merge(test, median_Client_Prod, all.x = TRUE)
submit$M2 <- join(test, median_Prod, by = "Producto_ID", type="left")$M2
submit$Pred <- submit$M3
submit[is.na(M3)]$Pred <- submit[is.na(M3)]$M2
submit[is.na(Pred)]$Pred <- median
setnames(submit,"Pred","Demanda_uni_equil")
head(submit)
write.csv(submit[,.(id,Demanda_uni_equil)],"submit.csv", row.names = FALSE)