我正在尝试找到一种方法来将列添加到我的Zoo对象而不会出现警告:
在Zoo(rval,index(x)[i])中警告:“ zoo”对象的一些方法 如果“ order.by”中的索引条目不是唯一的,则不起作用
假设我有以下代码:
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)))]))
执行此操作的正确方法是什么,这样我不会收到警告?
答案 0 :(得分: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)