Với khác nhau một hàng XTS đối tượng:Làm cách nào để hợp nhất các đối tượng xts với các cột hơi khác nhau?
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"))
Tôi muốn kết hợp chúng thành một đối tượng XTS duy nhất. Nhưng cbind(z1,z2,z3)
cho:
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
Trong khi những gì tôi mong đợi là:
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
(. Tôi có thể lấy NAS đổi thành zero với cho fill=0
, tức là cbind(z1,z2,z3,fill=0)
)
rbind(z1,z2,z3)
phàn nàn rằng các hàng có số cột khác nhau. Nhưng, tôi tin rằng nếu các cột bị thiếu được thêm vào từng đối tượng xts trước thì đây có phải là một cách tiếp cận tốt không?
Dữ liệu thực có thể có 1000 hàng và một vài trăm cột (khi đã được hợp nhất), vì vậy tôi đã có một mắt về hiệu quả.
'merge.xts' và' merge.zoo' chỉ hợp nhất theo chỉ mục, vì vậy bạn không thể có được kết quả mong muốn bằng cách sử dụng 'hợp nhất' (hoặc' cbind'). Vì vậy, có vẻ như bạn cần 'rbind', nhưng (như bạn nói) nó sẽ yêu cầu tất cả các đối tượng có cùng số cột trong cùng một thứ tự. –