[R] xts time series object removing time and leaving just the date

arun smartpink111 at yahoo.com
Fri Mar 8 00:02:05 CET 2013


HI Douglas,
index(res)
#[1] "2012-09-10 23:59:00 EDT" "2012-09-11 23:59:00 EDT"
#[3] "2012-09-12 02:15:00 EDT"

 str(index(res))
 #POSIXct[1:3], format: "2012-09-10 23:59:00" "2012-09-11 23:59:00" ...

When you use this:

strsplit(index(res)," ")
#Error in strsplit(index(res), " ") : non-character argument


Convert it to character and split
 strsplit(as.character(index(res))," ")# split by space
#[[1]]
#[1] "2012-09-10" "23:59:00"  

#[[2]]
#[1] "2012-09-11" "23:59:00"  

#[[3]]
#[1] "2012-09-12" "02:15:00"  

Now it is a list with three list elements.  Each list element is a vector of length two.

lapply(strsplit(as.character(index(res))," "), function(x) x[1]) #select the first vector element
#[[1]]
#[1] "2012-09-10"

#[[2]]
#[1] "2012-09-11"

#[[3]]
#[1] "2012-09-12"


 unlist(lapply(strsplit(as.character(index(res))," "), function(x) x[1]))  #which is still a 'character' class
#[1] "2012-09-10" "2012-09-11" "2012-09-12"


  index(res)<-unlist(lapply(strsplit(as.character(index(res))," "), function(x) x[1]))
#Error in `index<-.xts`(`*tmp*`, value = c("2012-09-10", "2012-09-11",  : 
 # unsupported ‘index’ index type of class ‘character’

Convert it to `date`
index(res)<- as.Date(unlist(lapply(strsplit(as.character(index(res))," "), function(x) x[1])))
res
#                [,1]
#2012-09-10  19.64393
#2012-09-11 -81.62702
#2012-09-12  11.98883





----- Original Message -----
From: Douglas Karabasz <douglas at sigmamonster.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc: 
Sent: Thursday, March 7, 2013 5:44 PM
Subject: RE: [R] xts time series object removing time and leaving just the date

Arun,

This is awesome, works perfect!  Now I'm trying to understand it.  I hate to
ask this but could you give a quick overview of 

index(res)<-as.Date(unlist(lapply(strsplit(as.character(index(res)),"
"),function(x) x[1])))  

If I'm ask too much I understand.  You got me over the hump and I'm sure I
will understand it at a later date.  

Thank you again,
Douglas

-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com] 
Sent: Thursday, March 07, 2013 4:04 PM
To: Douglas Karabasz
Subject: Re: [R] xts time series object removing time and leaving just the
date

Hi Douglas,
No problem.
Arun




----- Original Message -----
From: Douglas Karabasz <douglas at sigmamonster.com>
To: 'arun' <smartpink111 at yahoo.com>
Cc: 
Sent: Thursday, March 7, 2013 4:41 PM
Subject: RE: [R] xts time series object removing time and leaving just the
date

Arun,

Yes, this looks great!  Thanks for the help.  Also, thanks for creating a
xts object for me first.  I should have done it in the question looking
back.  However, I think I would have created incorrectly so I learned two
really helpful things here.

Thanks again,
Douglas

-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Thursday, March 07, 2013 1:09 PM
To: Douglas Karabasz
Cc: R help
Subject: Re: [R] xts time series object removing time and leaving just the
date

Hi,

Try this:
library(xts)

Date1<- seq(as.POSIXct("2012-09-10 02:15:00",format="%Y-%m-%d %H:%M:%S"),
as.POSIXct("2012-09-12 02:15:00",format="%Y-%m-%d %H:%M:%S"), by="min")
length(Date1)
#[1] 2881
set.seed(15)
value<- rnorm(2881)
xt1<-xts(value,order.by=Date1)

res<-apply.daily(xt1,sum)
res1<- res

 res
#                         [,1]
#2012-09-10 23:59:00  19.64393
#2012-09-11 23:59:00 -81.62702
#2012-09-12 02:15:00  11.98883
 index(res)<-as.Date(unlist(lapply(strsplit(as.character(index(res)),"
"),function(x) x[1])))
 res
#                [,1]
#2012-09-10  19.64393
#2012-09-11 -81.62702
#2012-09-12  11.98883

#or
index(res1)<-as.Date(gsub("\\s+.*","",index(res1)))
 res1
#                [,1]
#2012-09-10  19.64393
#2012-09-11 -81.62702
#2012-09-12  11.98883

A.K.



----- Original Message -----
From: Douglas Karabasz <douglas at sigmamonster.com>
To: r-help at r-project.org
Cc: 
Sent: Thursday, March 7, 2013 1:42 PM
Subject: [R] xts time series object removing time and leaving just the date

I have and XTS time series object that has date and time.  I started with 1
minute data and used apply.daily(x, sum) to sum the data to one cumulative
value.  This function works just fine however it leaves a time for the last
summed value which looks like this 2006-07-19 14:58:00.  I need to just have
the date and to remove the time value of 14:58:00 just leaving the date
value of 2006-07-19  .  I want to keep the xts object otherwise intact.  Is
this possible?    

Thank you,
Douglas






    [[alternative HTML version deleted]]

______________________________________________
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.



More information about the R-help mailing list