我有一个像这样的巨大载体:
12/06/2000 15/07/2001 17/01/2002 25/03/2005 22/05/2005
17/01/2006 13/03/2006 05/02/2007 12/02/2008
4814 Levels: 01/01/2000 01/01/2001 01/01/2002 01/01/2003 01/01/2004 01/01/2005 ...
我可以使用提供给我的关卡在不同时期对子矢量进行子集化吗?因此,例如,如果我选择01/01/2000直到2000年1月31日,R将只给我关于2000年的观察。
对于阅读此内容的任何人都有一点警告:as.Date(等级(a),“%d /%m /%Y”)根据我提供的格式给出日期。
答案 0 :(得分:0)
你可能需要做这样的事情(未经测试的代码) -
a[strftime(as.Date(as.character(a),'%d/%m/%Y'),'%Y') == '2000']
答案 1 :(得分:0)
一般情况下,不保证对等级进行排序。因此,如果使用各种级别,您可能会获得所需原始数据范围之外的数据。如果在您的特定情况下,您确保正确排序级别,那么是。
修改:任何排序的解决方案:
a = factor(c("2013-12-21","2011-11-28","2000-10-15","2005-08-08","2000-12-31"))
dlevels = as.Date(levels(a))
lindex = which(dlevels >= as.Date("2000-01-01") & dlevels <= as.Date("2000-12-31"))
b = a[a@.Data %in% lindex]
> a
[1] 2013-12-21 2011-11-28 2000-10-15 2005-08-08 2000-12-31
Levels: 2000-10-15 2000-12-31 2005-08-08 2011-11-28 2013-12-21
> b
[1] 2000-10-15 2000-12-31
Levels: 2000-10-15 2000-12-31 2005-08-08 2011-11-28 2013-12-21