Time series is one of the most common analysis and modeling in Data Science. In this article, we will learn how to create time series in R.
Let’s say we had a vector of sales data. In this example, we have five elements with dollars values, i.e. 400, etc.
sales <- c(300, 400, 100, 400, 800)
Now, let’s say we want to convert this to a time series object which
will index our data by date. We can use the built in ts
method. We
will use three parameters: data, which will take our sales data above,
start, which will set to start In January of 2018, and frequency, which
will set to 1 to represent once a year.
sales.data <- ts(data = sales, start = c(2018, 1), frequency = 1)
sales.data
## Time Series:
## Start = 2018
## End = 2022
## Frequency = 1
## [1] 300 400 100 400 800
Here you can see that we now have a Time Series object that spans from 2018 to 2022.
If our data was not yearly, we can change the frequency. Let’s assume the sales were quartly. We can change the frequency to 4.
sales.data <- ts(data = sales, start = c(2018, 1), frequency = 5)
sales.data
## Time Series:
## Start = c(2018, 1)
## End = c(2018, 5)
## Frequency = 5
## [1] 300 400 100 400 800
Now our data represents sales per a quarter.
The built in ts
function is great, but there are alternatives that you
may see while using time series data.
Let’s start with the zoo
library, which adds a lot of functionality to
the build in time series. We can create an object using the zoo
function.
library(zoo)
## Warning: package 'zoo' was built under R version 4.0.5
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
zoo(sales.data)
## 2018 2018.2 2018.4 2018.6 2018.8
## 300 400 100 400 800
If we didn’t have a time series object already, we can pass our sales data and a sequence of dates to zoo.
days <- seq(as.Date("2018-01-01"), as.Date("2018-01-05"), by = "days")
zoo(sales, days)
## 2018-01-01 2018-01-02 2018-01-03 2018-01-04 2018-01-05
## 300 400 100 400 800
Another library you may see is the xts
library. It extends zoo
, so
anything that works with zoo
also works with xts
. We can create an
xts
time series the same way as zoo
.
library(xts)
## Warning: package 'xts' was built under R version 4.0.5
days <- seq(as.Date("2018-01-01"), as.Date("2018-01-05"), by = "days")
xts(sales, days)
## [,1]
## 2018-01-01 300
## 2018-01-02 400
## 2018-01-03 100
## 2018-01-04 400
## 2018-01-05 800