【发布时间】:2019-08-10 08:38:21
【问题描述】:
我正在尝试找到一种方法来将一列附加到我的动物园对象而不会出现警告:
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)))]))
这样做的正确方法是什么,所以我没有收到警告?
【问题讨论】:
-
首先,不要使用 MATCH。这已经包含在先前的答案中。其次,如果您想将
a减少到年/月,请使用aggregate.zoo,例如aggregate(a, as.yearmon, mean) -
@G.Grothendieck 我知道你不鼓励使用
MATCH,但我想不出另一种方法。我认为在这种情况下我不能使用聚合,因为我没有聚合。我不是想简化为 yearmon,这只是我尝试对数据执行的操作的一个示例。我需要将mon表中匹配列的值附加到a表中,是的,它在a 表中不会是唯一的。问题不在于“只需将a中日期字段的 yearmon 填充到month列中”。我展示的只是一个更大项目的简单示例。 -
想要的结果是什么?
-
上面的代码给出了正确的结果。唯一的问题是警告。有没有办法在不收到警告的情况下获得相同的结果?
-
在这种情况下,我收回关于比赛的评论。见答案。