{"nbformat_minor": 1, "metadata": {"kernelspec": {"display_name": "R", "name": "ir", "language": "R"}, "language_info": {"name": "R", "version": "3.4.1", "pygments_lexer": "r", "codemirror_mode": "r", "mimetype": "text/x-r-source", "file_extension": ".r"}}, "nbformat": 4, "cells": [{"metadata": {"_cell_guid": "21eaab48-2b78-44b5-b89d-51564f61cc6b", "_uuid": "55845d3689b489a5952abd10ea264da772a1e307", "_kg_hide-output": false}, "cell_type": "code", "execution_count": null, "source": ["#Loading libraries\n", "library(zoo)\n", "library(dplyr)\n", "library(chron)\n", "library(data.table)\n", "\n", "# Importing datasets\n", "holiday_events <- fread(\"../input/holidays_events.csv\", sep = \",\", header = T)\n", "items <- fread(\"../input/items.csv\", sep = \",\", header = T)\n", "oil <- fread(\"../input/oil.csv\", sep = \",\", header = T)\n", "stores <- fread(\"../input/stores.csv\", sep = \",\", header = T)\n", "train <- fread(\"../input/train.csv\", sep = \",\", header = T, stringsAsFactors = F)\n", "transactions <- fread(\"../input/transactions.csv\", sep = \",\", header = T)\n", "test <- fread(\"../input/test.csv\", sep = \",\", header = T, stringsAsFactors = F)\n", "\n", "# Trying out with a sample to start with\n", "train_copy <- train\n", "test_copy <- test\n", "train <- train_copy[1:10000,]\n", "test <- test_copy[1:10000,]\n", "\n", "###### ---------- Basic Treamtment on the data ------------ ######\n", "\n", "# 'onpromotion' column has 16% blanks (not NAs!), let's replace that with '-1'\n", "train$onpromotion[train$onpromotion == \"\"] <- -1\n", "test$onpromotion[train$onpromotion == \"\"] <- -1\n", "\n", "# Checking NAs on remaining tables\n", "sapply(stores, function(y) sum(length(which(is.na(y)))))\n", "sapply(items, function(y) sum(length(which(is.na(y)))))\n", "sapply(holiday_events, function(y) sum(length(which(is.na(y)))))\n", "sapply(oil, function(y) sum(length(which(is.na(y)))))\n", "sapply(transactions, function(y) sum(length(which(is.na(y)))))\n", "       \n", "#'Oil' table has few nulls. Replacing this with previous day's oil price:\n", "oil <- oil %>% do(na.locf(.))\n", "       \n", "#Converting each column in dfs to appropriate types:\n", "#(Date columns are automatically of Date type)\n", "\n", "#Holiday events\n", "holiday_events$transferred <- as.logical(holiday_events$transferred)\n", "\n", "#Items\n", "items$perishable <- as.logical(items$perishable)\n", "\n", "#train\n", "train$onpromotion <- as.factor(train$onpromotion)\n", "\n", "#test\n", "train$onpromotion <- as.factor(train$onpromotion)\n", "       \n", "\n", "######  ------------  Merging data to create a master dataset --------  #####\n", "\n", "master_data <- left_join(train, oil, by='date') %>% left_join(., items, by = 'item_nbr') %>% \n", "  left_join(., stores, by='store_nbr') %>% left_join(., holiday_events, by='date') %>% \n", "  left_join(., transactions, by= c('date', 'store_nbr'))\n", "\n", "# Adding new cols to this based on 'Additional Information' provided:\n", "       \n", "# Adding 'Pay day' flag, 15th and last day of every month:\n", "month_ends <- seq(as.Date(\"2013-01-01\"),length=60,by=\"months\")-1\n", "master_data$pay_day <- 0\n", "master_data$pay_day[mday(master_data$date) == 15 | master_data$date %in% month_ends] <- 1\n", "\n", "# Flagging 6 weeks after the earthquake event which effected sales:\n", "master_data$earthquake_flag <- 0\n", "master_data$earthquake_flag[master_data$date >= '2016-04-16' & master_data$date <= '2016-05-30'] <- 1\n", "\n", "# Data set is ready to go!\n", "head(master_data)"], "outputs": []}]}