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 <ggrothendi...@gmail.com> wrote:
From: Gabor Grothendieck <ggrothendi...@gmail.com>
Subject: Re: [R] Problem with merging two zoo objects
To: "Megh Dal" <megh700...@yahoo.com>
Cc: r-h...@stat.math.ethz.ch
Date: Saturday, October 16, 2010, 12:11 AM
On Fri, Oct 15, 2010 at 2:20 PM, Megh
Dal <megh700...@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
______________________________________________
R-help@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.