Подтвердить что ты не робот

Более длинная длина объекта не кратна короткой длине объекта?

Я не понимаю, почему R дает мне предупреждение о том, что "Длительная длина объекта не кратна короткой длине объекта"

У меня есть этот объект, который генерируется путем создания агрегата по серии xts, дающей среднюю неделю недели:

u <- aggregate(d, list(Ukedag = format(index(d),"%w")), median)

1 314.0
2 282.5
3 270.0
4 267.0
5 240.5

Затем я пытаюсь применить это к моей исходной серии xts, которая выглядит так (только намного дольше)

head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286

Использование:

coredata(d) <- coredat(d) - u[format(index(d),"%w")];

Это приводит к предупреждению.

Цель состоит в том, чтобы вычесть среднее значение дня недели. Он работает, несмотря на предупреждение, но о чем беспокоиться?

Исправленное решение: попытка 2

apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )

У меня действительно была серьезная ошибка. Это не дает никаких предупреждений, и я проверил его, выполнив:

apply.daily(d, function(x) u[format(index(x), "%w")] )

Затем, проверяя некоторые даты, и оказалось, что это было согласовано с календарем.

4b9b3361

Ответ 1

Да, это то, о чем вам следует беспокоиться. Проверьте длину объектов с помощью nrow(). R может автоматически реплицировать объекты так, чтобы они были одинаковой длины, если они отличаются друг от друга, что означает, что вы можете выполнять операции с несогласованными данными.

В этом случае у вас есть очевидный недостаток в том, что вы вычитаете агрегированные данные из необработанных данных. Они, безусловно, будут иметь разную длину. Я предлагаю вам объединить их как временные ряды (используя даты), затем locf(), а затем выполнить вычитание. В противном случае объедините их, усекая исходные даты до того же интервала, что и совокупная серия. Просто будьте очень осторожны, чтобы не прекращать наблюдения.

Наконец, в качестве некоторых общих советов, когда вы начинаете: посмотрите на результат своих вычислений, чтобы узнать, имеют ли они смысл. Вы можете даже потянуть их в таблицу и повторить результаты.