Subsetting data.table set by date range in R

black_sheep07 picture black_sheep07 · Mar 15, 2014 · Viewed 61.4k times · Source

I have a large dataset in data.table that I'd like to subset by a date range. My data set looks like this:

testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
                                     "2013-10-05","2013-11-06")), 
                      yr = c(2013,2013,2013,2013,2013), 
                      mo = c(07,08,09,10,11),
                      da = c(02,03,04,05,06), 
                      plant = LETTERS[1:5], 
                      product = as.factor(letters[26:22]), 
                      rating = runif(25))

I'd like to be able to choose a date range directly from the as.Date column without using the yr, mo, or da columns. Currently, I'm subsetting by mo and it's extremely clunky at times, especially when years switch over. A more elegant method of doing this would make my life infinitely easier.

Thanks in advance!

Answer

Troy picture Troy · Mar 15, 2014

Why not:

testset[date>="2013-08-02" & date<="2013-11-01"]