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

How do i subset a zoo object based on values for a particular month

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

谢谢!

我们可以用formatindex中提取'months',通过与'Dec'比较得到一个逻辑索引,并用它来对[=17进行子集化=]对象。

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 对象,也可以使用 xts 包中的 .indexmon.indexmon从0开始,所以12月是11。

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

评论中的其他选项正在 index 上使用 grep 来获取数字索引和子集(来自@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'))