Я пытаюсь преобразовать мой широкий фрейм данных в длинный фрейм данных с помощью функции расширения от tidyverse. Однако, когда я применяю функцию, только первый ключ получает значения, остальные получают NA.
Вот мой код для 10 акций. Вытягивание данных занимает около 30 секунд.
library(tidyverse)
library(BatchGetSymbols)
tickers = c("IBB", "QQQ", "SPY", "XLK", "EFA", "EEM", "XLY", "XLP", "XLF",
"XLE","XLU", "XLV"
)
l.out = BatchGetSymbols::BatchGetSymbols(tickers = tickers,
first.date = "2017-01-01",
last.date = Sys.Date()
)
data = l.out$df.tickers
head(data)
price.open price.high price.low price.close volume price.adjusted ref.date ticker
1 89.12000 90.25000 88.90667 90.08 3725100 89.57880 2017-01-03 IBB
2 90.20667 92.90667 90.20667 92.41 6222900 91.89584 2017-01-04 IBB
3 92.84333 93.14333 91.87666 92.70 3709200 92.18421 2017-01-05 IBB
4 93.28000 93.83000 92.79000 93.42 4624500 92.90020 2017-01-06 IBB
5 94.05334 95.00000 93.39667 94.76 4605600 94.23276 2017-01-09 IBB
6 95.18667 95.72334 94.14000 95.50 4728900 94.96864 2017-01-10 IBB
ret.adjusted.prices ret.closing.prices
1 NA NA
2 0.025865943 0.025865919
3 0.003138075 0.003138113
4 0.007766927 0.007767001
5 0.014343973 0.014343867
6 0.007809227 0.007809181
Я хотел бы иметь новые столбцы в качестве имен тикеров с ret.adjusted.prices в качестве значения.
Вы увидите, что большинство столбцов имеют NA после выполнения приведенного ниже кода.
df = data %>% spread(key = ticker, value = ret.adjusted.prices)
![enter image description here](https://i.stack.imgur.com/gyjtn.png)
Я бы хотел, чтобы NA были заменены на правильное значение ret.adjusted.prices.
Спасибо.