[R] Need help on parsing dates

Gabor Grothendieck ggrothendieck at myway.com
Wed Feb 25 08:48:10 CET 2004



I just came across another package for irregular dates, zoo,
giving another alternative.

It can be used together with dates, chron or POSIXct.  For
example, using chron:

require(zoo)
require(chron)
z.zoo <- zoo(z$Data, chron(z$Date, format="y-m-d"))

---
Date:   Mon, 23 Feb 2004 17:22:42 -0500 (EST) 
From:   Gabor Grothendieck <ggrothendieck at myway.com>
To:   <ajayshah at mayin.org>, <r-help at stat.math.ethz.ch> 
Subject:   RE: [R] Need help on parsing dates 

 


There are a number of ways to do this. First read in the data 
using the as.is=1 argument to ensure that the date is read 
in as character:

z <- read.table(myfile, as.is=1, sep=" ", col.names=c("Date", "Data"))

Now you can create a date column using date, POSIXct, chron or irts:

# date
require(date) 
z$Date <- as.date(z$Date,format="ymd"))

# POSIXct
z$Date <- as.POSIXct(z$Date))

# chron
require(chron)
z$Date <- chron(z$Date, "y-m-d")

You can create a ts timeseries (which is regular) by ignoring t
he dates altogether:

z.ts <- ts(z$Data)

Or an irts irregular time series using package tseries:

require(tseries)
z.irts <- irts(as.POSIXct(z$Date), z$Data)

Or an its irregular time series using package its:

require(its)
z.its <- readcsvIts(myfile, sep=" ", col.names=c("Date", "Data"))

Assuming z.ts was used you can do this:

ar(z.ts, order=1)
etc.

---
Date: Tue, 24 Feb 2004 01:37:23 +0530 
From: Ajay Shah <ajayshah at mayin.org>
To: r-help <r-help at stat.math.ethz.ch> 
Subject: [R] Need help on parsing dates 


I know this:

> library(date)
> x="1979-04-04"
> try=as.date(x, "ymd")
> print(try)
[1] 4Apr79

and that `x' here has to be a string, e.g.:

> x=1979-04-04
> print(x)
[1] 1971

I'm stuck in reading from a file. I say: 

> A <- read.table(file="try")
> print(A)
V1 V2
1 1979-04-04 -1.04712042
2 1979-04-06 0.54538055
3 1979-04-09 0.09663392
4 1979-04-11 0.57119871
5 1979-04-12 0.73594112
6 1979-04-17 -1.54422087
7 1979-04-18 -0.20595691
8 1979-04-19 0.12700429
9 1979-04-20 0.42016807
10 1979-04-23 -1.46838241

I am confused - is V1 a number or a string? Looking at it, it must be
a string. But yet:

> library(date)
> try=as.date(A$V1, "ymd")
Error in as.date(A$V1, "ymd") : Cannot coerce to date format

In short, how do I parse in dates of the format yyyy-mm-dd (the ISO
8601 format) or the yyyymmdd format.

And if I may ask the next step: How do I tell R that I have a file
full of data all of which is time-series data, where V1 is the
datetime vector, and all the other columns are time-series, to do
things like ARMA models and ts plots with?




More information about the R-help mailing list