Noob3000
Noob3000

Reputation: 53

Date Formatting in Time Series Codes

I have a .csv file that looks like this:

Date Time Demand
01-Jan-05 6:30 6
01-Jan-05 6:45 3
...
23-Jan-05 21:45 0
23-Jan-05 22:00 1

The days are broken into 15 minute increments from 6:30 - 22:00.

Now, I am trying to do a time series on this, but I am a little lost on the notation of this.

I have the following so far:

library(tidyverse)
library(forecast)
library(zoo)

tp <- read.csv(".csv")
tp.ts <- ts(tp$DEMAND, start = c(), end = c(), frequency = 63)

The frequency I am after is an entire day, which I believe makes the number 63.***

However, I am unsure as to how to notate the dates in c().

***Edit

If the frequency is meant to be observations per a unit of time, and I am trying to observe just (Demand) by the 15 minute time slots (Time) in each day (Date), maybe my Frequency is 1?

***Edit 2

So I think I am struggling with doing the time series because I have a Date column (which is characters) and a Time column.

Since I need the data for Demand at the given hours on the dates, maybe I need to convert the dates to be used in ts() and combine the Date and Time date into a new column?

If I do this, I am assuming this should give me the times I need (6:30 to 22:00) but with the addition of having the date?

However, the data is to be used to predict the Demand for the rest of the month. So maybe the Date is an important variable if the day of the week impacts Demand?

Upvotes: 0

Views: 96

Answers (1)

G. Grothendieck
G. Grothendieck

Reputation: 269461

We assume you are starting with tp shown reproducibly in the Note at the end. A complete cycle of 24 * 4 = 96 points should be represented by one unit of time internally. The chron class does that so read it in as a zoo series z with chron time index and then convert that to ts giving ts_ser or possibly leave it as a zoo series depending on what you are going to do next.

library(zoo)
library(chron)

to_chron <- function(date, time) as.chron(paste(date, time), "%d-%b-%y %H:%M")
z <- read.zoo(tp, index = 1:2, FUN = to_chron, frequency = 4 * 24)
ts_ser <- as.ts(z)

Note

tp <- structure(list(Date = c("01-Jan-05", "01-Jan-05"), Time = c("6:30", 
"6:45"), Demand = c(6L, 3L)), row.names = 1:2, class = "data.frame")

Upvotes: 0

Related Questions