Слияние / Vlookup 2 XTS объектов разных размеров - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь объединить 2 объекта xts, где второму необходимо заполнить новый столбец в первом - в случае пропуска значения заполнить 0

По сути, у меня есть эти два объекта xts

str(x1)
An ‘xts’ object on 1999-01-01/2019-06-14 containing:
  Data: num [1:5336, 1:14] 0.611 0.614 0.62 0.623 0.629 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:14] "Open" "High" "Low" "Close" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
 NULL
> str(x2)
An ‘xts’ object on 1999-03-25/2019-04-25 containing:
  Data: chr [1:202, 1] "enter_long" "exit_long" "enter_long" "exit_long" "enter_long" "exit_long" "enter_long" "exit_long" ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "Rule"
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
 NULL

мой объект x1 выглядит так

head(x1)
             Open   High    Low  Close  N     MA1 MA2 MA3 MA3_curve buy_signal exit_buysignal sell_signal exit_sellsignal pos
1999-01-01 0.6114 0.6138 0.6098 0.6103 NA 0.00000   0   0        NA          0              0           0               0   0
1999-01-04 0.6137 0.6201 0.6112 0.6182 NA 0.00000   0   0        NA          0              0           0               0   0
1999-01-05 0.6198 0.6255 0.6193 0.6224 NA 0.00000   0   0        NA          0              0           0               0   0
1999-01-06 0.6227 0.6305 0.6192 0.6283 NA 0.00000   0   0        NA          0              0           0               0   0
1999-01-07 0.6288 0.6354 0.6275 0.6348 NA 0.62280   0   0        NA          0              0           0               0   0
1999-01-08 0.6347 0.6384 0.6313 0.6339 NA 0.62752   0   0        NA          0              0           0               0   0

, а мой второй объект x2 выглядит так

           Rule        
1999-03-25 "enter_long"
1999-03-30 "exit_long" 
1999-04-14 "enter_long"
1999-05-31 "exit_long" 
1999-06-10 "enter_long"
1999-06-18 "exit_long" 

Когда я использую

i <- cbind.xts(x1,x2, fill = "0")

он корректно заполняет отсутствующие значения 0, но заполняет существующее значение NA Вот сообщение об ошибке

Warning message:
In merge.xts(..., all = all, fill = fill, suffixes = suffixes) :
  NAs introduced by coercion

Я перепробовал все, что нашел -merge.xts /cbind.xts -lookup от dplyr -....

Спасибо за вашу помощь

...