我在data.table中有一个大型数据集,我希望按日期范围进行子集化。我的数据集如下所示:
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))
我希望能够直接从as.Date
列中选择日期范围而不使用yr
,mo
或da
列。目前,我按mo
进行子集化,并且有时非常笨重,特别是在多年切换时。一种更优雅的方法可以让我的生活变得更加轻松。
提前致谢!
答案 0 :(得分:30)
为什么不:
testset[date>="2013-08-02" & date<="2013-11-01"]
答案 1 :(得分:16)
另见:
?`%between%`
像这样工作:
testset[date %between% c("2013-08-02", "2013-11-01")]
答案 2 :(得分:4)
您提到您正在进行子集化,但不清楚您是否在使用R中的子集fn
在R控制台中键入?子集,以查看R中子集()函数的详细信息,该函数返回符合条件的矢量,矩阵或数据帧的子集。然后使用Troy上面发布的方法的一部分来选择日期范围
thisYear <- subset(testset, date > "2015-01-01" & date < "2015-12-31")