如果“order.by”中的索引条目不是唯一的,那么如何避免“动物园”对象的某些方法不起作用?

问题描述 投票:0回答:1

我试图找到一种方法将列附加到我的动物园对象,而不会发出警告:

动物园中的警告(rval,index(x)[i]):如果“order.by”中的索引条目不是唯一的,“zoo”对象的某些方法不起作用

假设我有以下代码:

a <- read.zoo(data.frame(date=as.Date('2011-12-31') + 0:49, col1=seq(1,50), col2=seq(11,60)), FUN = as.Date)
mon <- read.zoo(data.frame(date=c(as.Date('2012-01-01'), as.Date('2012-02-01'), as.Date('2012-03-01')), mc=letters[1:3], mc2=LETTERS[1:3]), FUN = as.Date)

并且假设我想将index(mon)附加到a,以便我可以在以后引用它:

a$month <- as.numeric(index(mon[MATCH(as.yearmon( time(a)), as.yearmon(time(mon)))]))

这样做的正确方法是什么,所以我没有得到警告?

r zoo
1个回答
1
投票

如果我理解正确,你想要a索引的月份的第一个日期的数值,除非那个年/月没有出现在mon的索引中,在这种情况下你想要NA。

mon.ym <- as.yearmon(index(mon))
a$month <- as.numeric(as.Date(mon.ym))[ match(as.yearmon(index(a)), mon.ym) ]

没有match的替代方案是:

a.ym <- as.yearmon(index(a))
a$month <- ifelse(a.ym %in% as.yearmon(index(mon)), as.Date(a.ym), NA)
© www.soinside.com 2019 - 2024. All rights reserved.