У меня есть два объекта XTS.
Первый «stocks_purchase_dates» содержит даты открытия и цены покупки 4 акций.
stocks_purchase_dates
stock1 stock2 stock3 stock4
2018-03-19 NA NA NA 165.78
2018-03-21 NA 36.1 NA NA
2018-03-23 23 NA NA NA
2018-03-26 NA NA 48.81 NA
Второй "stocks_prices_mar15_mar28" содержит цены на 4 акции за период с 15 марта по 28 марта 2018 года.
stocks_prices_mar15_mar28
stock1 stock2 stock3 stock4
2018-03-15 23.30 44.28 54.75 177.34
2018-03-16 23.06 45.12 55.10 176.72
2018-03-19 23.31 44.44 54.31 174.02
2018-03-20 23.75 44.82 54.06 173.96
2018-03-21 23.92 43.19 53.91 170.02
2018-03-22 23.47 41.27 51.68 167.61
2018-03-23 23.43 39.96 49.90 163.73
2018-03-26 24.16 38.27 51.68 171.50
2018-03-27 23.40 37.19 50.10 167.11
2018-03-28 23.27 36.99 50.94 165.26
В "stocks_prices_mar15_mar28" я хочузамените значения каждой акции до даты открытия (указанные в "stocks_purchase_dates") на 0 с.
Одним из возможных решений является замена на столбец и даты:
stocks_prices_mar15_mar28[,"stock1"]["/2018-03-22", ] <- 0
stocks_prices_mar15_mar28[,"stock2"]["/2018-03-20", ] <- 0
stocks_prices_mar15_mar28[,"stock3"]["/2018-03-25", ] <- 0
stocks_prices_mar15_mar28[,"stock4"]["/2018-03-18", ] <- 0
Вывод:
stocks_prices_mar15_mar28
stock1 stock2 stock3 stock4
2018-03-15 0.00 0.00 0.00 0.00
2018-03-16 0.00 0.00 0.00 0.00
2018-03-19 0.00 0.00 0.00 165.78
2018-03-20 0.00 0.00 0.00 173.96
2018-03-21 0.00 36.10 0.00 170.02
2018-03-22 0.00 41.27 0.00 167.61
2018-03-23 23.00 39.96 0.00 163.73
2018-03-26 24.16 38.27 48.81 171.50
2018-03-27 23.40 37.19 50.10 167.11
2018-03-28 23.27 36.99 50.94 165.26
Это работает, но если у нас будет намного больше акций и дат открытия, это станет трудным и сложным.
Есть ли способ выполнить задачу более эффективно, например сприменять или для цикла или функции из пакета purrr?