переименуйте столбцы из списка после разбиения длинного фрейма данных на широкий

#r

Вопрос:

Привет.
Я пытаюсь поместить вектор цен в широкий фрейм данных, который внутренне соединен определенным столбцом.
Здесь я использовал BatchGetSymbols, который отображает цены в длинном фрейме данных, очистил его, а затем попытался разделить его по названию тикера.
Это дало мне список. Затем я попытался объединить все фреймы данных в этом списке по дате.

 tickers.tech = c("AAPL", "GPRO", "HEAR", "IRBT", "LPL", "SONO", "VUZI")

ohlc = BatchGetSymbols(tickers.tech,first.date="2018-01-01")[[2]]
test = ohlc %>% select(ticker, ref.date, ret.adjusted.prices) %>% na.omit()
x = split(test,test$ticker)

t1 = plyr::join_all(x,by="ref.date")
 

Тем не менее, это оставило меня с:

введите описание изображения здесь

Я сейчас пытаюсь переименовать соответствующие столбцы «скорректированные цены» с соответствующим тикером.ie.aapl. ret, gpro. ret и т. Д.
Я вполне уверен, что решение моей проблемы придет до этого момента, надеясь на некоторую помощь. Ищу надежное решение, так как я собираюсь делать это с другими секторами с разной длиной. Спасибо!

Ответ №1:

Если я правильно понимаю, ожидаемый результат преобразуется из длинного в широкий формат, где строки идентифицируются ref.date , в то время как столбцы дают возвращаемое значение для каждого тикера.

Это мое предложение с использованием моего любимого набора инструментов:

 library(BatchGetSymbols)
library(data.table)
library(magrittr)
ohlc <- BatchGetSymbols(tickers.tech, first.date = "2018-01-01")[[2]]
ohlc %>% 
  na.omit() %>% 
  setDT() %>% 
  dcast(ref.date ~ paste0(ticker, ".ret"), value.var = "ret.adjusted.prices")
 
        ref.date      AAPL.ret      GPRO.ret     HEAR.ret     IRBT.ret       LPL.ret     SONO.ret     VUZI.ret
  1: 2018-01-03 -0.0001740738  0.0067204301 -0.029213483  0.036704158  0.0262225372           NA  0.000000000
  2: 2018-01-04  0.0046451241  0.0106809079  0.030092593 -0.025529901 -0.0131215470           NA  0.023809524
  3: 2018-01-05  0.0113852273 -0.0066050198  0.022471910  0.013346540 -0.0027991603           NA  0.186046512
  4: 2018-01-08 -0.0037143326 -0.1276595745  0.006593407 -0.002682939  0.0007017544           NA  0.124183007
  5: 2018-01-09 -0.0001144906 -0.0594512195 -0.028384279 -0.007459049 -0.0098176718           NA  0.017441860
 ---                                                                                                         
869: 2021-06-16  0.0039339325 -0.0154471545  0.004160943  0.007272696 -0.0178217822  0.002030133  0.016235780
870: 2021-06-17  0.0126008381 -0.0206440958 -0.005524889 -0.016193915  0.0463709677 -0.027785790 -0.037869822
871: 2021-06-18 -0.0100917070 -0.0379426644 -0.083611056 -0.003984032  0.0163776493 -0.016076243 -0.031365314
872: 2021-06-21  0.0141039085  0.0131463628  0.006971779 -0.015473695  0.0265402844  0.036308655  0.023492127
873: 2021-06-22  0.0126983595 -0.0008650519 -0.050571943 -0.014220058 -0.0073868883  0.000000000  0.001240571