[R] plot two time series with different length and different starting point in one figure.
arun
smartpink111 at yahoo.com
Tue Jan 22 23:41:49 CET 2013
Hi Rebecca,
No problem.
Just a doubt regarding the last calendar day and last business day.
dateA<-seq(as.Date("01FEB2012",format="%d%B%Y"),length=15,by="1 month")-1 #gives the last calendar day/month
dateB<- seq.Date(as.Date("28MAR2012",format="%d%B%Y"),as.Date("28DEC2012",format="%d%B%Y"),by="month") #here I used day 28. If it didn't change
#then this works.
set.seed(15)
A<-data.frame(dateA,value=cumsum(sample(1:50,15,replace=TRUE)))
set.seed(25)
B<-data.frame(dateB,value=cumsum(sample(1:72,10,replace=TRUE)))
A[,1]<-as.Date(gsub("\\d+$","28",A[,1]))
library(xts)
library(zoo)
Anew<-as.xts(A[,-1],order.by=A[,1])
Bnew<-as.xts(B[,-1],order.by=B[,1])
res<-merge(Anew,Bnew)
plot.zoo(res)
From your reply, it seems like dateB day didn't change.
A.K.
----- Original Message -----
From: "Yuan, Rebecca" <rebecca.yuan at bankofamerica.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc: R help <r-help at r-project.org>
Sent: Tuesday, January 22, 2013 5:28 PM
Subject: RE: [R] plot two time series with different length and different starting point in one figure.
Hello Arun,
Thanks very much! In this way, it works! I convert both A and B to the same day of the month, and therefore there is no NA shown for different last business day and last calendar day of the month.
You are very help!
Cheers,
Rebecca
-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Tuesday, January 22, 2013 5:06 PM
To: Yuan, Rebecca
Cc: R help
Subject: Re: [R] plot two time series with different length and different starting point in one figure.
HI Rebecca,
Try this:
dateA<-seq.Date(as.Date("28JAN2012",format="%d%B%Y"),as.Date("28DEC2012",format="%d%B%Y"),by="month")
dateB<-seq.Date(as.Date("30JAN2012",format="%d%B%Y"),as.Date("30DEC2012",format="%d%B%Y"),by="month")
set.seed(15)
A<-data.frame(dateA,value=cumsum(sample(1:50,12,replace=TRUE)))
set.seed(25)
B<-data.frame(dateB,value=cumsum(sample(1:72,12,replace=TRUE)))
B[,1]<-as.Date(gsub("\\d+$","28",B[,1]))
B[,1][duplicated(B[,1],fromLast=TRUE)]<-as.Date(gsub("(.*-).*(-.*)","\\102\\2",B[,1][duplicated(B[,1],fromLast=TRUE)])) #this step may not be needed in ur data. In the month of march, there were two values
library(xts)
Anew<-as.xts(A[,-1],order.by=A[,1])
Bnew<-as.xts(B[,-1],order.by=B[,1])
res<-merge(Anew,Bnew)
library(zoo)
plot.zoo(res)
A.K.
----- Original Message -----
From: "Yuan, Rebecca" <rebecca.yuan at bankofamerica.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc:
Sent: Tuesday, January 22, 2013 3:53 PM
Subject: RE: [R] plot two time series with different length and different starting point in one figure.
Hello Arun,
I do not want to remove those NA values because they are the monthly data but recorded as the last calendar date in A and last business date in B.
I tried to use
raw_time <- substr(raw_time,3,9)
raw_time <- as.Date(raw_time,format="%d%B%Y")
to cutoff the date and leave the month and year in raw_time, and then convert it to a valid date type of data, but I failed.
Is there a way that I can present
2012-09-28 NA NA 5400726 14861715970 2012-09-30 5035606 14832837436 NA NA
into something like
2012-09-30 5035606 14832837436 5400726 14861715970
By converting 2012-09-28 to the last calendar date as of 2012-09-30 then B will be recorded at the last business date of the month, and will not have any NA values.
Dput() gives me
> dput(tail(res))
structure(c(121, NA, 111, 111, 120, 119, 309, NA, 313, 307, 30, 313, 130, 130, NA, 130, 130, 130, 309, 313, NA, 309, 310, 315), class = c("xts", "zoo"), .indexCLASS = "Date", .indexTZ = "", tclass = "Date", tzone = "", index = structure(c(134, 134, 134, 135, 135, 135), tzone = "", tclass = "Date"), .Dim = c(6L, 4L), .Dimnames = list(NULL, c("raw_acct", "raw_baln", "raw_acct.1",
"raw_baln.1")))
Thanks very much!
Cheers,
Rebecca
-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Tuesday, January 22, 2013 3:41 PM
To: Yuan, Rebecca
Cc: R help
Subject: Re: [R] plot two time series with different length and different starting point in one figure.
Hi Rebecca,
In the previous email,
res<-merge(Anew,Bnew)
head(res)
# Anew Bnew
#2012-01-01 181 NA
#2012-01-02 59 NA
#2012-01-03 290 NA
#2012-01-04 196 NA
#2012-01-05 111 NA
#2012-01-06 297 NA
plot.zoo(res) # removes the NA values from Bnew.. (if NA was present in Anew, I guess, it would remove that from plotting)
If you want to remove the NA rows:
use, na.omit() or complete.cases()? #as I did in the previous email.
Could you dput() an example dataset?
A.K.
----- Original Message -----
From: "Yuan, Rebecca" <rebecca.yuan at bankofamerica.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc: R help <r-help at r-project.org>
Sent: Tuesday, January 22, 2013 2:38 PM
Subject: RE: [R] plot two time series with different length and different starting point in one figure.
Hello Arun,
This would help me to get the date type of data. A new question comes out that since the dates are not exactly the same on two date sets, there are some NA values in the merged data set, such as
2012-09-28 NA NA 5400726 14861715970 2012-09-30 5035606 14832837436 NA NA
Does R have a function to convert the date to some format of Sep,2012, therefore when I merge those two, they will not have those NA numbers...
Thanks,
Rebecca
-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Tuesday, January 22, 2013 2:15 PM
To: Yuan, Rebecca
Cc: R help
Subject: Re: [R] plot two time series with different length and different starting point in one figure.
Hi Rebecca,
Assuming that 'raw_data' is data.frame with first column as "raw_time:
You could convert the raw_time to date format by
as.Date("28FEB2002",format="%d%B%Y")
#[1] "2002-02-28"
In your data, it should be:
raw_data$raw_time<- as.Date(raw_time,format="%d%B%Y")
Could you just dput() a few lines of your dataset if this is not working?
Tx.
A.K.
----- Original Message -----
From: "Yuan, Rebecca" <rebecca.yuan at bankofamerica.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc:
Sent: Tuesday, January 22, 2013 2:08 PM
Subject: RE: [R] plot two time series with different length and different starting point in one figure.
Hello Arun,
My data shows that I do not have a date type of data:
summary(raw_data)
raw_time raw_acct raw_baln
28FEB2002: 1 Min. : 61714 Min. :117079835
28FEB2003: 1 1st Qu.: 75587 1st Qu.:158035150
28FEB2005: 1 Median :100234 Median :206906298
28FEB2006: 1 Mean : 96058 Mean :210550369
28FEB2007: 1 3rd Qu.:116908 3rd Qu.:263623782
28FEB2009: 1 Max. :121853 Max. :325290870
(Other) :127
>
How could I transfer the "raw_time" column to a date format, such as
summary(dateA)
Min. 1st Qu. Median Mean 3rd Qu. Max.
"2012-01-01" "2012-04-01" "2012-07-01" "2012-07-01" "2012-09-30" "2012-12-31"
Thanks very much!
Cheers,
Rebecca
-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Tuesday, January 22, 2013 12:39 PM
To: Yuan, Rebecca
Cc: R help; Petr PIKAL
Subject: Re: [R] plot two time series with different length and different starting point in one figure.
Hi,
You could also try this:
dateA<-seq.Date(as.Date("1jan2012",format="%d%b%Y"),as.Date("31Dec2012",format="%d%b%Y"),by="day")
dateB<-seq.Date(as.Date("1Mar2012",format="%d%b%Y"),as.Date("30Nov2012",format="%d%b%Y"),by="day")
set.seed(15)
A<-data.frame(dateA,value=sample(1:300,366,replace=TRUE))
set.seed(25)
B<-data.frame(dateB,value=sample(1:300,275,replace=TRUE))
library(xts)
Anew<-as.xts(A[,-1],order.by=A[,1])
Bnew<-as.xts(B[,-1],order.by=B[,1])
res<-merge(Anew,Bnew)
res1<-res[complete.cases(res),]
library(zoo)
plot.zoo(res1)
plot.zoo(res)
A.K.
----- Original Message -----
From: "Yuan, Rebecca" <rebecca.yuan at bankofamerica.com>
To: 'PIKAL Petr' <petr.pikal at precheza.cz>
Cc: R help <r-help at r-project.org>
Sent: Tuesday, January 22, 2013 10:36 AM
Subject: Re: [R] plot two time series with different length and different starting point in one figure.
Hello Petr,
As the time series have the same column names, I got the error message like:
--------------------------------------------------------------------
> m1<-merge(A, B, by.x = "time", by.y = "balance")
Error in fix.by(by.x, x) : 'by' must specify uniquely valid column(s)
--------------------------------------------------------------------
To plot A and B in one plot is to compare the difference between them...
Any other thoughts?
Thanks,
Rebecca
-----Original Message-----
From: PIKAL Petr [mailto:petr.pikal at precheza.cz]
Sent: Tuesday, January 22, 2013 10:28 AM
To: Yuan, Rebecca; R help
Subject: RE: plot two time series with different length and different starting point in one figure.
Hi
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Yuan, Rebecca
> Sent: Tuesday, January 22, 2013 4:07 PM
> To: R help
> Subject: [R] plot two time series with different length and different
> starting point in one figure.
>
> Hello,
>
> I do have two different time series A and B, they are different in
> length and starting point. A starts in Jan, 2012 and ends in Dec, 2012
> and B starts in March, 2012 and ends in Nov, 2012.
>
> How can I plot those two series A and B in the same plot? I.E., from
> Jan. 2012 - Feb, 2012, it would have one data point from A and from
> Mar, 2012-Nov, 2012, it would have two data points from A and B, and
> in December 2012, it would have one data point from A.
Merge those 2 series.
?merge
Regards
Petr
>
> Thanks very much!
>
> Cheers,
>
> Rebecca
>
>
> ----------------------------------------------------------------------
> This message, and any attachments, is for the
> intended...{{dropped:13}}
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.bankofamerica.com/emaildisclaimer. If you are not the intended recipient, please delete this message.
----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.bankofamerica.com/emaildisclaimer. If you are not the intended recipient, please delete this message.
----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.bankofamerica.com/emaildisclaimer. If you are not the intended recipient, please delete this message.
----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.bankofamerica.com/emaildisclaimer. If you are not the intended recipient, please delete this message.
More information about the R-help
mailing list