[R] correct my method of estimating mean of two POSIXlt data frames

Gabor Grothendieck ggrothendieck at myway.com
Wed Oct 6 00:17:27 CEST 2004


 page took 0.31 seconds  • home | my page | my email 
  .   
 
 
 
 

 email     
 
 
 

Mail Addresses Calendar Notepad ggrothendieck at myway.com sign out 
<< Hide Folders Check Messages Compose Message POP Accounts | Mail Preferences | Help 
 
 
Folders 
Inbox 
Drafts 
Sent 
Trash (Empty) 
Bulk Mail (Empty) 
 
 
 
My Folders edit 
R 
Rcom 
Rtmp 
Saved 
this 
Tx 
zoo 
 
 
 
Spam Tools info 
   Spam Filter Level:
 OffLowMediumMedium-highHigh 
My Block List 
Image Filter 
Custom Filters 
 
 
 
 
 
 
Now Live: 

 125MB Free Storage Upgrade  
 
 
 

 Send/Receive 10MB emails!  
 
 
 

            < Prev Next >   Back to Inbox Print View  Full Header 
 
    As AttachmentAs Inline Text Move to Folder----- Folders ------InboxDraftsSentTrashBulk Mail---- My Folders ----RRcomRtmpSavedthisTxzoo
 
 

 Message is not flagged. [ Flag for Follow Up ] 



If instead of a data frame of POSIXlt objects you use a matrix
of POSIXct objects then that should work.   That is, replace

   tmp <- data.frame(t.start.cdt, t.end.cdt)

with

   tmp <- cbind(t.start.cdt+0, t.end.cdt+0)

in your code.

Date:   Tue, 5 Oct 2004 14:56:41 -0700 
From:   <gotrout at gmail.com>
To:   <r-help at stat.math.ethz.ch> 
Subject:   Re: [R] correct my method of estimating mean of two POSIXlt data frames 

 
My apology for not properly quoting someone.

Let me amend my original email. In R version 1.8.1, if I have two
objects that look like:

> t.start.cdt[1:4]
[1] "2003-07-09 11:02:25" "2003-07-09 11:10:25" "2003-07-09 11:30:25"
[4] "2003-07-09 12:00:25"
> class(t.start.cdt)
[1] "POSIXt"  "POSIXlt"

> t.end.cdt[1:4]
[1] "2003-07-09 11:02:35" "2003-07-09 11:10:35" "2003-07-09 11:30:35"
[4] "2003-07-09 12:00:35"
> class(t.end.cdt)
[1] "POSIXt"  "POSIXlt"

I could estimate the mean of "pairs" of times (such as t.start.cdt[1]
and t.end.cdt[1]) using these commands:
tmp <- data.frame(t.start.cdt, t.end.cdt)
tmp <- apply(tmp, MARGIN=1, FUN=mean)
class(tmp) <- c("POSIXt", "POSIXct")
t.mean.cdt <- as.POSIXlt(tmp)

In version 1.9.1, I get these warnings
Warning messages:
1: longer object length
is not a multiple of shorter object length in: cl == c("Date",
"POSIXct", "POSIXlt")
2: longer object length
is not a multiple of shorter object length in: cl == c("Date",
"POSIXct", "POSIXlt")
3: argument is not numeric or logical: returning NA in:
mean.default(newX[, i], ...)
4: argument is not numeric or logical: returning NA in:
mean.default(newX[, i], ...)

I think I wrote a rather convoluted way around this problem, which I
stated in my original email, but I don't "understand" why the method
stated here doesn't work. Can you explain what I'm missing.

Also, please note that in my original message, I used underscore
instead of period in the variable names.

Mike
Berkeley, California, USA



On Tue, 5 Oct 2004 21:13:05 +0100 (BST), Prof Brian Ripley
<ripley at stats.ox.ac.uk> wrote:
> On Tue, 5 Oct 2004 "gotrout at gmail.com" (but with no name nor signature)
> wrote:
> 
> Quoting someone without credit (and therefore in breach of their
> copyright)
> 
> 
> 
> > > If a.lt and b.lt are the two vectors of POSIXlt dates then try
> > > converting each to POSIXct and unclassing to make each numeric.
> > > Take the mean of the two numeric vectors and convert them back to
> >
> > I see. I'm a little confused with the use of class/unclass versus
> > as.XX. For example, instead of using unclass, why wouldn't I use
> > as.numeric? Could someone explain the difference?
> 
> That advice is wrong: you should not be unclassing before forming the
> mean as mean() has a method for POSIXct.




More information about the R-help mailing list