[R] Problem with merging two zoo objects
Achim Zeileis
Achim.Zeileis at uibk.ac.at
Fri Oct 15 21:56:56 CEST 2010
On Fri, 15 Oct 2010, Megh Dal wrote:
> Hi Gabor, please see the attached files which is in text format. I have
> opened them on excel then, used clipboard to load them into R. Still
> really unclear what to do.
I've read both files using read.zoo():
R> z1 <- read.zoo("dat1.txt", sep = ",", header = TRUE,
+ format = "%m/%d/%Y %H:%M:%S", tz = "")
Warning message:
In zoo(rval3, ix) :
some methods for "zoo" objects do not work if the index entries in
'order.by' are not unique
R> z2 <- read.zoo("dat2.txt", sep = ",", header = TRUE,
+ format = "%m/%d/%Y %H:%M:%S", tz = "")
Then, merge() does not work because some time indexes are not unique (and
it would be unclear how these should be matched):
R> merge(z1, z2)
Error in merge.zoo(z1, z2) :
series cannot be merged with non-unique index entries in a series
However, you can remove the duplicated, e.g., by computing averages:
R> z1a <- aggregate(z1, time(z1), mean)
Then
R> merge(z1a, z2)
works.
> Also can you please elaborate this term "index = list(1, 2), FUN =
> function(d, t) as.POSIXct(paste(d, t))" in your previous file? In help,
> it is given that:"If FUN is specified then read.zoo calls FUN with the
> index as the first argument". I really could not connect your syntax
> with help.
The way Gabor read the data, the index was in two separate columns
(columns 1 and 2). Hence, he specified
index = list(1, 2)
and then provided a function that would return a POSIXct object when
called with two arguments
FUN(column1, column2)
hth,
Z
> --- On Sat, 10/16/10, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
>
>> From: Gabor Grothendieck <ggrothendieck at gmail.com>
>> Subject: Re: [R] Problem with merging two zoo objects
>> To: "Megh Dal" <megh700004 at yahoo.com>
>> Cc: r-help at stat.math.ethz.ch
>> Date: Saturday, October 16, 2010, 12:11 AM
>> On Fri, Oct 15, 2010 at 2:20 PM, Megh
>> Dal <megh700004 at yahoo.com>
>> wrote:
>> > Dear all, I have following 2 zoo objects. However when
>> I try to merge those 2 objects into one, nothing is coming
>> as intended. Please see below the objects as well as the
>> merged object:
>> >
>> >
>> >> dat11
>> > V2 V3 V4 V5
>> > 2010-10-15 13:43:54 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:44:15 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:45:51 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:46:21 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:47:27 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:47:54 73.8 73.8 73.8 73.8
>> > 2010-10-15 13:49:51 73.7 73.7 73.7 73.7
>> >> dat22
>> > V2 V3 V4 V5
>> > 2010-10-15 12:09:12 74.0 74.0 74.0 74.0
>> > 2010-10-15 12:09:33 73.9 73.9 73.9 73.9
>> > 2010-10-15 12:20:36 74.0 74.0 74.0 74.0
>> > 2010-10-15 12:30:36 74.0 74.0 74.0 74.0
>> > 2010-10-15 12:41:03 73.7 73.7 73.7 73.7
>> >> merge(dat11, dat22)
>> > V2.dat11 V3.dat11
>> V4.dat11 V5.dat11 V2.dat22 V3.dat22 V4.dat22 V5.dat22
>> > 2010-10-15 12:09:12 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 12:09:33 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:43:54 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:44:15 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:45:51 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:46:21 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:47:27 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:47:54 NA NA
>> NA NA NA NA NA
>> NA
>> > 2010-10-15 13:49:51 NA NA
>> NA NA NA NA NA
>> NA
>> > Warning messages:
>> > 1: In MATCH(x, x) == seq_len(length(x)) :
>> > longer object length is not a multiple of shorter
>> object length
>> > 2: In MATCH(x, x) == seq_len(length(x)) :
>> > longer object length is not a multiple of shorter
>> object length
>> >
>> > If somebody points me whether I went wrong, it would
>> be really great.
>> >
>>
>> If I try it then it works properly so there is likely
>> something wrong
>> with your dat11 and dat22 objects. If you provide the
>> problem
>> reproducibly one might be able to say more.
>>
>> > Lines1 <- "Date Time
>> V2 V3 V4 V5
>> + 2010-10-15 13:43:54 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:44:15 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:45:51 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:46:21 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:47:27 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:47:54 73.8 73.8 73.8 73.8
>> + 2010-10-15 13:49:51 73.7 73.7 73.7 73.7"
>> >
>> > Lines2 <- "Date Time
>> V2 V3 V4 V5
>> + 2010-10-15 12:09:12 74.0 74.0 74.0 74.0
>> + 2010-10-15 12:09:33 73.9 73.9 73.9 73.9
>> + 2010-10-15 12:20:36 74.0 74.0 74.0 74.0
>> + 2010-10-15 12:30:36 74.0 74.0 74.0 74.0
>> + 2010-10-15 12:41:03 73.7 73.7 73.7 73.7"
>> >
>> > library(zoo)
>> > dat1 <- read.zoo(textConnection(Lines1), header =
>> TRUE,
>> + index = list(1, 2), FUN = function(d, t)
>> as.POSIXct(paste(d, t)))
>> Warning messages:
>> 1: closing unused connection 8 (Lines2)
>> 2: closing unused connection 7 (Lines1)
>> 3: closing unused connection 5 (Lines2)
>> 4: closing unused connection 4 (Lines1)
>> 5: closing unused connection 3 (Lines2)
>> > dat2 <- read.zoo(textConnection(Lines2), header =
>> TRUE,
>> + index = list(1, 2), FUN = function(d, t)
>> as.POSIXct(paste(d, t)))
>> > merge(dat1, dat2)
>>
>> V2.dat1 V3.dat1 V4.dat1 V5.dat1 V2.dat2
>> V3.dat2
>> V4.dat2 V5.dat2
>> 2010-10-15 12:09:12 NA
>> NA NA
>> NA 74.0 74.0
>> 74.0 74.0
>> 2010-10-15 12:09:33 NA
>> NA NA
>> NA 73.9 73.9
>> 73.9 73.9
>> 2010-10-15 12:20:36 NA
>> NA NA
>> NA 74.0 74.0
>> 74.0 74.0
>> 2010-10-15 12:30:36 NA
>> NA NA
>> NA 74.0 74.0
>> 74.0 74.0
>> 2010-10-15 12:41:03 NA
>> NA NA
>> NA 73.7 73.7
>> 73.7 73.7
>> 2010-10-15 13:43:54 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:44:15 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:45:51 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:46:21 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:47:27 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:47:54 73.8
>> 73.8 73.8 73.8
>> NA NA
>> NA NA
>> 2010-10-15 13:49:51 73.7
>> 73.7 73.7 73.7
>> NA NA
>> NA NA
>>
>> --
>> Statistics & Software Consulting
>> GKX Group, GKX Associates Inc.
>> tel: 1-877-GKX-GROUP
>> email: ggrothendieck at gmail.com
>>
More information about the R-help
mailing list