日付列を含むデータフレームを時系列に変換する 質問する

日付列を含むデータフレームを時系列に変換する 質問する

次のデータを含むデータフレームがあります:

>PRICE
         DATE  CLOSE
1    20070103 54.700
2    20070104 54.770
3    20070105 55.120
4    20070108 54.870
5    20070109 54.860
6    20070110 54.270
7    20070111 54.770
8    20070112 55.360
9    20070115 55.760
...

ご覧のとおり、DATE 列は日付 (yyyyMMdd) を表し、CLOSE 列は価格を表します。

ここで、PerformanceAnalytics パッケージから CalmarRatio を計算する必要があります。

私は R を初めて使うので、すべてを理解することはできませんが、グーグルで調べたところ、その関数の R パラメータは時系列のようなオブジェクトである必要があることがわかりました。

期間内のすべての日付のデータがない可能性がある場合 (指定した日付のみ)、配列を時系列オブジェクトに変換する方法はありますか?

ベストアンサー1

DATEは日付を表す場合がありますが、実際には文字、係数、整数、または数値ベクトルのいずれかです。

まず、DATE列をオブジェクトに変換する必要があります。次に、data.frameの列と列Dateから xts オブジェクトを作成できます。最後に、xts オブジェクトを使用して、リターンと Calmar 比率を計算できます。CLOSEDATEPRICE

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

おすすめ記事