我的csv文件中有这样的数据
Date AAPL MSFT GOOG
8/19/2014 100.53 45.78787879 522.7956989
8/18/2014 99.16 45.56565657 517.0967742
8/15/2014 97.98 45.24242424 511.7204301
8/14/2014 97.5 44.71717172 508.1362007
8/13/2014 97.24 44.52525253 506.5232975
8/12/2014 95.97 43.95959596 499.9641577
8/11/2014 95.99 43.63636364 498.8888889
8/8/2014 94.74 43.63636364 494.4086022
8/7/2014 94.48 43.66666667 493.5842294
8/6/2014 94.96 43.17171717 493.5483871
我正在读这个
price_data <- read.csv("C:\\Prices.csv")
我想将其转换为时间序列。我在R - Transform Data frame to Time Series和Convert data frame with date column to timeseries看到了问题。
但是,在我的情况下,我有一个以上的专栏要转换。列数不能变化。
一个解决方案似乎是每列分开并转换为时间序列,然后使用cbind合并回来。
最好的方法是什么。
修改 我想用这个数据来计算分量VaR。我也有符号的位置
MSFT 1000
AAPL 1520
GOOG 398
VaR in package&#34; PerformanceAnalytics&#34;接受时间序列。有没有其他方法可以传递这些数据?
答案 0 :(得分:1)
试试这个:
Lines <- "Date AAPL MSFT GOOG
8/19/2014 100.53 45.78787879 522.7956989
8/18/2014 99.16 45.56565657 517.0967742
8/15/2014 97.98 45.24242424 511.7204301
8/14/2014 97.5 44.71717172 508.1362007
8/13/2014 97.24 44.52525253 506.5232975
8/12/2014 95.97 43.95959596 499.9641577
8/11/2014 95.99 43.63636364 498.8888889
8/8/2014 94.74 43.63636364 494.4086022
8/7/2014 94.48 43.66666667 493.5842294
8/6/2014 94.96 43.17171717 493.5483871"
library(PerformanceAnalytics)
library(zoo)
z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y")
rets <- diff(z, arithmetic = FALSE) - 1
VaR(rets)
,并提供:
AAPL MSFT GOOG
VaR -0.005010481 -0.001461903 -0.001090975