簡體   English   中英

使用 tq_transmute() function 時如何保留所有列?

[英]How do I retain all the columns while using tq_transmute() function?

我正在嘗試在 R 中復制交易策略和回測。 但是,我對 tq_transmute() function 有一點問題。 任何幫助,將不勝感激。

因此,到目前為止,我已經編寫了以下代碼:

       #Importing the etfs data
        symbols<- c("SPY","XLF","XLE")
        start<-as.Date("2000-01-01")
        end<- as.Date("2018-12-31")
        
        price_data<- lapply(symbols, function(symbol){
              etfs<-as.data.frame(getSymbols(symbol,src="yahoo", from=start, to= end, 
                                             auto.assign = FALSE))
              colnames(etfs)<- c("Open", "High","Low","Close","volume","Adjusted")
              etfs$Symbol<- symbol
              etfs$Date<- rownames(etfs)
              etfs
            })
    
     # Next, I used do.call() with rbind() to combine the data into a single data frame   
        
        etfs_df<- do.call(rbind, price_data)
    
        #This because of POSIXct error
        daily_price<- etfs_df %>%
                  mutate(Date=as.Date(Date, frac=1)) 
# I have deleted some columns of the table as my work only concerned the "Adjusted" column. 
#So, until now we have:
 
        head(daily_price)
    
          Adjusted Symbol       Date
        1 98.14607    SPY 2000-01-03
        2 94.30798    SPY 2000-01-04
        3 94.47669    SPY 2000-01-05
        4 92.95834    SPY 2000-01-06
        5 98.35699    SPY 2000-01-07
        6 98.69440    SPY 2000-01-10
    
        #Converting the daily adjusted price to monthly adjusted price
    
        monthly_price<- 
      tq_transmute(daily_price,select = Adjusted, mutate_fun = to.monthly, indexAt = "lastof")
    
    head(monthly_price)
    
    # And now, I get the following table: 
    
    # A tibble: 6 x 2
      Date       Adjusted
      <date>        <dbl>
    1 2000-01-31     16.6
    2 2000-02-29     15.9
    3 2000-03-31     17.9
    4 2000-04-30     17.7
    5 2000-05-31     19.7
    6 2000-06-30     18.6

因此,如您所見,日期和調整后的價格已成功轉換為月度數據,但我的符號列消失了。 誰能告訴我為什么會發生這種情況以及如何找回它?

謝謝你。

Symbol對數據進行分組並應用tq_transmute

library(dplyr)
library(quantmod)
library(tidyquant)

monthly_price <- daily_price %>%
                  group_by(Symbol) %>%
                  tq_transmute(daily_price,select = Adjusted, 
                               mutate_fun = to.monthly, indexAt = "lastof")

#  Symbol Date       Adjusted
#   <chr>  <date>        <dbl>
# 1 SPY    2000-01-31     94.2
# 2 SPY    2000-02-29     92.7
# 3 SPY    2000-03-31    102. 
# 4 SPY    2000-04-30     98.2
# 5 SPY    2000-05-31     96.6
# 6 SPY    2000-06-30     98.5
# 7 SPY    2000-07-31     97.0
# 8 SPY    2000-08-31    103. 
# 9 SPY    2000-09-30     97.6
#10 SPY    2000-10-31     97.2
# … with 674 more rows

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM