[R] Zoo and numeric data
Achim Zeileis
Achim.Zeileis at wu-wien.ac.at
Wed Aug 12 11:14:46 CEST 2009
On Wed, 12 Aug 2009, Mark Breman wrote:
> Hi,
> I have a csv file with different datatypes:
>
> 2009-01-01, character1, 10, 20.1
> 2009-01-02, character2, 11, 21.1
>
> (I have attached the file to this post)
>
> I read this file with read.zoo as I want a zoo/xts timeseries:
>> t = read.zoo("./data.txt", sep=",", dec = ".", header=FALSE)
>
> If I look at the zoo data all integer/numeric columns are read as
> character:
>> str(t)
> ?zoo? series from 2009-01-01 to 2009-01-02
> Data: chr [1:2, 1:3] " character1" " character2" "10" "11" "20.1" "21.1"
> - attr(*, "dimnames")=List of 2
> ..$ : NULL
> ..$ : chr [1:3] "V2" "V3" "V4"
> Index: Class 'Date' num [1:2] 14245 14246
>
> So I try the colClasses parameter with read.zoo but it looks like this does
> not make any difference:
>> t1 = read.zoo("./data.txt", sep=",", dec = ".", header=FALSE,
> colClasses=c("Date", "character", "integer", "numeric"))
>> str(t1)
> ?zoo? series from 2009-01-01 to 2009-01-02
> Data: chr [1:2, 1:3] " character1" " character2" "10" "11" "20.1" "21.1"
> - attr(*, "dimnames")=List of 2
> ..$ : NULL
> ..$ : chr [1:3] "V2" "V3" "V4"
> Index: Class 'Date' num [1:2] 14245 14246
>
> Why does read.zoo ignores the colClasses parameter
zoo objects are a matrix plus an "index" (aka time) attribute (of
arbitrary class). As the data is a matrix, it can only be of one type,
everything numeric typically. Mixed classes would require a data.frame
plus index, which is currently not yet supported.
> and how do I get integer/numeric data into my zoo series?
You can read it as a data.frame and convert the character column to
integers if that makes sense for your data:
x <- read.table("data.txt", sep = ",")
x[,2] <- as.numeric(x[,2])
z <- zoo(as.matrix(x[,-1]), as.Date(as.character(x[,1])))
Alternatively, you could store the data as a data.frame of zoo series (a
column in a data.frame can be of class zoo, including factor columns).
hth,
Z
> Regards,
>
> -Mark-
>
More information about the R-help
mailing list