#' Adds two TS objects together
#'
#' @param series1 A ts object
#' @param series2 A ts object
#' @return The new ts object.
#' @examples
#' temp <- c(1:14)
#' Series1 <- ts(temp,start=c(2016,1),frequency = 12)
#' Series2 <- ts(temp,start=c(2016,1),frequency = 12)
#' SeriesA <- tsadd(series1=Series1,series2=Series2)
#' @export
tsadd <- function(series1,series2)
{
if(is.ts(series1)==FALSE || is.ts(series2)==FALSE)
{
stop("series1 and series2 has to be ts objects.")
}
if(!((frequency(series1)==12 && frequency(series2)==12) || (frequency(series1)==4 && frequency(series2)==4)))
{
stop("tsadd only supports monthly and quarterly data right now")
}
if(frequency(series1)!=frequency(series2))
{
stop("both series1 and series2 has to be the same frequency")
}
startper1 <- start(series1)
endper1 <- end(series1)
length1 <- tslength(series1)
freqp <- frequency(series1)
if(freqp==4)
freq="q"
else
freq="m"
startper2 <- start(series2)
endper2 <- end(series2)
length2 <- tslength(series2)
minlength=min(length1,length2)
maxlength=max(length1,length2)
if(startper1[1]==startper2[1] && startper1[2]==startper2[2])
{
temp <- c(Series1[1]+Series2[1])
year <- startper1[1]
period <- startper1[2]
SeriesA <- ts(temp,start=c(startper1[1],startper1[2]),frequency=freqp)
for(a in 2:minlength)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c(Series1[a]+Series2[a])
SeriesA <- tsenter(SeriesA,year,period,temp)
}
if(maxlength>minlength)
{
for(a in minlength+1:maxlength)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
SeriesA <- tsenter(SeriesA,year,period,"na")
}
}
}
else if (startper1[1]==startper2[1] && startper1[2]>startper2[2] || (startper1[1]>startper2[1]))
{
pd <- tsperdiff(startper2,startper1,freq)
temp <- c("na")
year <- startper2[1]
period <- startper2[2]
SeriesA <- ts(temp,start=c(startper2[1],startper2[2]),frequency=freqp)
if(pd>1)
{
for(a in 2:pd)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c("na")
SeriesA <- tsenter(SeriesA,year,period,temp)
}
}
sp=min(tsperdiff(startper1,endper1,freq),tsperdiff(startper1,endper2,freq))+1
ep=min(tsperdiff(startper1,endper1,freq),tsperdiff(startper1,endper2,freq))+1
for(a in 1:sp)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c(series1[a]+series2[a+pd])
SeriesA <- tsenter(SeriesA,year,period,temp)
}
for(a in sp+1:ep)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c("na")
SeriesA <- tsenter(SeriesA,year,period,temp)
}
}
else
{
pd <- tsperdiff(startper1,startper2,freq)
temp <- c("na")
year <- startper1[1]
period <- startper1[2]
SeriesA <- ts(temp,start=c(startper1[1],startper1[2]),frequency=freqp)
if(pd>1)
{
for(a in 2:pd)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c("na")
SeriesA <- tsenter(SeriesA,year,period,temp)
}
}
sp=min(tsperdiff(startper2,endper2,freq),tsperdiff(startper2,endper1,freq))+1
ep=min(tsperdiff(startper2,endper2,freq),tsperdiff(startper2,endper1,freq))+1
for(a in 1:sp)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c(series2[a]+series1[a+pd])
SeriesA <- tsenter(SeriesA,year,period,temp)
}
for(a in sp+1:ep)
{
period <- period+1
if(period>freqp)
{
period <- 1
year <- year+1
}
temp <- c("na")
SeriesA <- tsenter(SeriesA,year,period,temp)
}
}
SeriesA
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.