Учитывая различные однорядные XTS объекты:Как объединить объекты xts с несколькими разными столбцами?
z1 = xts(t(c("9902"=0,"9903"=0,"9904"=0,"9905"=2,"9906"=2)),as.Date("2015-01-01"))
z2 = xts(t(c("9902"=3,"9903"=4,"9905"=6,"9906"=5,"9908"=8)),as.Date("2015-01-02"))
z3 = xts(t(c("9901"=1,"9903"=3,"9905"=5,"9906"=6,"9907"=7,"9909"=9)),as.Date("2015-01-03"))
Я хочу, чтобы объединить их в единый XTS объекта. Но cbind(z1,z2,z3)
дает:
X9902 X9903 X9904 X9905 X9906 X9902.1 X9903.1 X9905.1 X9906.1 X9908 X9901 X9903.2 X9905.2 X9906.2 X9907 X9909
2015-01-01 0 0 0 2 2 NA NA NA NA NA NA NA NA NA NA NA
2015-01-02 NA NA NA NA NA 3 4 6 5 8 NA NA NA NA NA NA
2015-01-03 NA NA NA NA NA NA NA NA NA NA 1 3 5 6 7 9
Принимая во внимание то, что я ожидаю:
9901 9902 9903 9904 9905 9906 9907 9908 9909
2015-01-01 0 0 0 0 2 2 0 0 0
2015-01-02 0 3 4 0 6 5 0 8 0
2015-01-03 1 0 3 0 5 6 7 0 9
(. Я могу получить NAs изменен на нулях с приданием fill=0
, т.е. cbind(z1,z2,z3,fill=0)
)
rbind(z1,z2,z3)
жалуется, что строки имеют разное количество столбцов. Но я считаю, что если бы отсутствующие столбцы были добавлены к каждому объекту xts заранее, это было бы хорошим подходом?
Реальные данные могут иметь 1000 строк и несколько сотен столбцов (после объединения), поэтому у меня есть один взгляд на эффективность.
'' merge.xts' и merge.zoo' сливаются только по индексу, так что вы не можете получить желаемый результат с помощью 'merge' (или' cbind'). Таким образом, похоже, что вам нужно 'rbind', но (как вы говорите) это потребует, чтобы все объекты имели одинаковое количество столбцов в одном порядке. –