问题
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!
回答1:
Why not:
testset[date>="2013-08-02" & date<="2013-11-01"]
回答2:
See also:
?`%between%`
Works like this:
testset[date %between% c("2013-08-02", "2013-11-01")]
回答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")
来源:https://stackoverflow.com/questions/22420487/subsetting-data-table-set-by-date-range-in-r