次のデータを含むデータフレームがあります:
>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 比率を計算できます。CLOSE
DATE
PRICE
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