从CSV文件时间序列转换数据

时间:2014-12-04 11:28:12

标签: r csv time-series

我的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 SeriesConvert data frame with date column to timeseries看到了问题。
但是,在我的情况下,我有一个以上的专栏要转换。列数不能变化。

一个解决方案似乎是每列分开并转换为时间序列,然后使用cbind合并回来。

最好的方法是什么。

修改 我想用这个数据来计算分量VaR。我也有符号的位置

MSFT 1000
AAPL 1520
GOOG 398

VaR in package&#34; PerformanceAnalytics&#34;接受时间序列。有没有其他方法可以传递这些数据?

1 个答案:

答案 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