2014-12-04 3 views
1

У меня есть данные, как это в моем файле CSVПреобразование данных из 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.

Какой лучший способ это сделать.

EDIT
Я хочу, чтобы вычислить компонент VaR, используя эти данные. У меня также есть позиции символа как

MSFT 1000 
AAPL 1520 
GOOG 398 

VaR в пакете «PerformanceAnalytics» принимает временные ряды. Есть ли другой способ передать эти данные?

+0

слиянием назад вы хотите получить data.frame с 3-мя колонками (дата, Value и Ticker) как выход? –

+0

Я имею в виду, я хочу, чтобы это было как Date (для временных рядов), AAPL, MSFT, GOOG. Таким образом, это будет как 4 столбца. Чтобы быть более конкретным, я хочу рассчитать компонент VaR http://stackoverflow.com/questions/27243094/no-contribution-in-component-var-using-historical-method-in-r –

+1

Вы на самом деле просто хотите преобразовать ' Date' в таймсерий, правильно? Потому что не имеет смысла преобразовывать ВСЕ столбцы. –

ответ

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 
+0

Кажется, что я работаю, когда я запускаю команды из R-консольного интерфейса. Хотя если я попытаюсь сохранить его в .r файле и запустить его из Rscript.exe, он показывает «Ошибка в'. .xts' (R,, column): индекс за пределами границ ». –

+0

спасибо, что получил работу. это вопрос разделителя. и ваш ответ делает то, что требуется. –

Смежные вопросы