Subsetting data.table set by date range in R
Solution 1
Why not:
testset[date>="2013-08-02" & date<="2013-11-01"]
Solution 2
See also:
?`%between%`
Works like this:
testset[date %between% c("2013-08-02", "2013-11-01")]
Solution 3
You mentioned that you are subsetting, but its not clear whether you are using the subset fn in R.
Type ?subset into the R console to see the details of the subset() function in R which 'returns a subset of vectors, matrices or data frames which meet conditions'. Then use part of the method that Troy posted above to choose the date range
thisYear <- subset(testset, date > "2015-01-01" & date < "2015-12-31")
black_sheep07
Updated on December 11, 2020Comments
-
black_sheep07 over 3 years
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 theyr
,mo
, orda
columns. Currently, I'm subsetting bymo
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!