Hi David, your approach selects the datapoints between "2007-06-01 10:00:00" and "2007-06-01 14:00:00" true enough. However, my real dataset is for several months and years. So I need data points between 10:00:00 and 14:00:00 only - independent of the date. I thought the name for that is "aggregating". Hope my aim is clearer now.
In fact, on top of that I would like to easily specify ranges of days, weeks and months as subintervals to aggregate on. Say e.g. every march to may or every first ten days of every month. Are there already helper functions for this? Thanks for your help David. On Thu, Mar 24, 2011 at 3:44 PM, David Winsemius <dwinsem...@comcast.net>wrote: > > 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@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 > > [[alternative HTML version deleted]] ______________________________________________ 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.