Как избежать «некоторые методы для объектов« зоопарка »не работают, если элементы индекса в« order.by »не являются уникальными»? - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь найти способ добавить столбец к моему объекту зоопарка, не нажимая предупреждение:

Предупреждение в зоопарке (rval, index (x) [i]): некоторые методы для объектов «зоопарка» не работают, если записи индекса в «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)))]))

Как правильно сделать это, чтобы я не получил предупреждение?

1 Ответ

1 голос
/ 19 марта 2019

Если я правильно понимаю, вы хотите, чтобы числовое значение даты первого числа месяца индекса 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...