如何根据特定月份的值对动物园对象进行子集化

时间:2016-01-31 17:11:44

标签: r zoo

My zoo object 我想创建一个仅包含12月流量值的值子集(这些是放电值)。

谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以使用indexformat中提取'月',通过与'Dec'进行比较来获取逻辑索引,并使用它来对zoo对象进行子集化。

z1[format(index(z1), '%b')=='Dec']
#1938-12-03 1938-12-10 1938-12-17 1938-12-24 1938-12-31 
#    49         50         51         52         53 

如果我们转换为xts对象,也可以使用.indexmon包中的xts.indexmon从0开始,因此12月是11。

library(xts)
z1[.indexmon(as.xts(z1))==11]

评论中的其他选项是使用grep上的index来获取数字索引和子集(来自@Pierre Lafortune)

 z1[grep("-12-",index(z1))]

subset/month选项(来自@ G. Grothendieck)

 subset(z1, months(time(z1)) == "December") 

数据

library(zoo)
z1 <- zoo(1:100, order.by = seq(as.Date('1938-01-01'), 
              length.out=100, by = '1 week'))