[R] subset and as.POSIXct / as.POSIXlt oddness

David Winsemius dwinsemius at comcast.net
Thu Mar 24 14:44:58 CET 2011


On Mar 24, 2011, at 9:29 AM, Michael Bach wrote:

> Dear R users,
>
> Given this data:
>
> x <- seq(1,100,1)
> dx <- as.POSIXct(x*900, origin="2007-06-01 00:00:00")
> dfx <- data.frame(dx)
>
> Now to play around for example:
>
> subset(dfx, dx > as.POSIXct("2007-06-01 16:00:00"))
>
> Ok. Now for some reason I want to extract the datapoints between hours
> 10:00:00 and 14:00:00, so I thought well:
>
> subset(dfx, dx > as.POSIXct("2007-06-01 16:00:00"), 14 >  
> as.POSIXlt(dx)$hour
> & as.POSIXlt(dx)$hour < 10)
> Error in as.POSIXlt.numeric(dx) : 'origin' must be supplied
>
> Well that did not work. But why does the following work?
>
> 14 > as.POSIXlt(dx)$hour & as.POSIXlt(dx)$hour < 10
>
> Is there something I miss about subset()? Or is there even another  
> way of
> aggregating over an hourly time interval in a nicer way?

I'm not sure what problem is odccuring with your method. The way I  
would have done it worked. The findInterval function also seemed to  
allow classification by intervals of 3600 seconds:

 > subset(dfx, dx > as.POSIXct("2007-06-01 10:00:00") & dx <  
as.POSIXct("2007-06-01 14:00:00"))
                     dx
41 2007-06-01 10:15:00
42 2007-06-01 10:30:00
43 2007-06-01 10:45:00
44 2007-06-01 11:00:00
45 2007-06-01 11:15:00
46 2007-06-01 11:30:00
47 2007-06-01 11:45:00
48 2007-06-01 12:00:00
49 2007-06-01 12:15:00
50 2007-06-01 12:30:00
51 2007-06-01 12:45:00
52 2007-06-01 13:00:00
53 2007-06-01 13:15:00
54 2007-06-01 13:30:00
55 2007-06-01 13:45:00

 > findInterval(dfx$dx, c( as.numeric(range(dfx$dx)[1]  
+(1:24)*3600) )  )
   [1]  0  0  0  0  1  1  1  1  2  2  2  2  3  3  3  3  4  4  4  4  5   
5  5  5  6  6  6  6  7
  [30]  7  7  7  8  8  8  8  9  9  9  9 10 10 10 10 11 11 11 11 12 12  
12 12 13 13 13 13 14 14
  [59] 14 14 15 15 15 15 16 16 16 16 17 17 17 17 18 18 18 18 19 19 19  
19 20 20 20 20 21 21 21
  [88] 21 22 22 22 22 23 23 23 23 24 24 24 24

>
> Best Regards,
> Michael Bach
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list