Reputation: 329
I have created an xts object from historical tick data, sourced from a SQL database. I would like to create subsets of the tick data, for example:
Show daily ticks between 10am and 2:30pm. This would allow me to create specific data sets for specific trade ideas, based on the time of day. The format of my index is as follows:
> index(merged[3567,])
[1] "2011-08-01 13:17:59 SAST"
Could an expert in xts please advise me how I would go about creating these subsets? Any advice would be greatly appreciated.
Upvotes: 3
Views: 2177
Reputation: 176648
You can do it with time-of-day subsetting:
merged["T10:00/T14:30"]
Upvotes: 4
Reputation: 1380
You can use difftime
to calculate the hours from the start of the day, e.g.:
diffs <- difftime(time(merged), as.Date(time(merged)), units="hours", tz="SAST")
and then subset with it as a boolean index:
merged[diffs > 10 & diffs < 14.5]
You can also use POSIXlt
:
merged[as.POSIXlt(time(merged))$hour > 10]
Upvotes: 1