Convert data frame with date column to timeseries

后端 未结 5 884
走了就别回头了
走了就别回头了 2020-11-29 20:06

I\'ve got a data frame with the following data:

>PRICE
         DATE  CLOSE
1    20070103 54.700
2    20070104 54.770
3    20070105 55.120
4    20070108 5         


        
5条回答
  •  独厮守ぢ
    2020-11-29 20:54

    Your DATE column may represent a date, but it is actually either a character, factor, integer, or a numeric vector.

    First, you need to convert the DATE column to a Date object. Then you can create an xts object from the CLOSE and DATE columns of your PRICE data.frame. Finally, you can use the xts object to calculate returns and the Calmar ratio.

    PRICE <- structure(list(
      DATE = c(20070103L, 20070104L, 20070105L, 20070108L, 20070109L,
               20070110L, 20070111L, 20070112L, 20070115L),
      CLOSE = c(54.7, 54.77, 55.12, 54.87, 54.86, 54.27, 54.77, 55.36, 55.76)),
      .Names = c("DATE", "CLOSE"), class = "data.frame",
      row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9"))
    
    library(PerformanceAnalytics)  # loads/attaches xts
    # Convert DATE to Date class
    PRICE$DATE <- as.Date(as.character(PRICE$DATE),format="%Y%m%d")
    # create xts object
    x <- xts(PRICE$CLOSE,PRICE$DATE)
    CalmarRatio(Return.calculate(x))
    #                  [,1]
    # Calmar Ratio 52.82026
    

提交回复
热议问题