使用级别来分组数据

时间:2014-01-08 16:07:15

标签: r

我有一个像这样的巨大载体:

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”)根据我提供的格式给出日期。

2 个答案:

答案 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