2016-07-01 17 views
0

これは何度か尋ねられたことがわかっていますが、私の問題を回避する正しい方法を見つけることができませんでした。今、私はPerformanceAnalyticsパッケージを使用できるようにXTSに私のdata.frameを変換する必要がデータフレーム(要因)をxtsに変換する

27.07.2015,100 
28.07.2015,100.1504 
29.07.2015,100.1957 
30.07.2015,100.5044 
31.07.2015,100.7661 
03.08.2015,100.9308 
04.08.2015,100.8114 
05.08.2015,100.6927 
06.08.2015,100.7501 
07.08.2015,100.7194 
10.08.2015,100.8197 
11.08.2015,100.8133 

:私は次のように見て、私はアップロード非常に単純なCSVファイルを持っています。私のdata.frameは、以下の構造を有する:

> str(mpey) 
'data.frame': 243 obs. of 2 variables: 
$ V1: Factor w/ 243 levels "01.01.2016","01.02.2016",..: 210 218 228 234 241 21 30 38 45 52 ... 
    - attr(*, "names")= chr "5" "6" "7" "8" ... 
$ V2: Factor w/ 242 levels "100","100.0062",..: 1 4 5 10 16 20 17 13 15 14 ... 
    - attr(*, "names")= chr "5" "6" "7" "8" ... 

私はas.xts機能と異なることを試みたが、それを動作させることができます。 これを乗り越える手助けをしてもらえますか?

+0

V1は多分文字または日付クラスに変更できますか? V2はfactorですが、数値に変更する必要があるかもしれません。 – zx8754

+0

すでに試しましたが、できません。それは常に私に*** as.Date.factor(mpey [、1]) charToDate(x)のエラー: 文字列が標準明白な形式でないか、私が試してみてください*** > as.Date( charToDate(x)のエラー: 文字列が標準的な明確な形式ではありません – paolino

+0

format = "%d /%m /%Y"を追加すると、252個のNA行が取得されます... .. – paolino

答えて

0

ここで、このようなtibbles(「整頓」のデータフレーム)にXTSとして時系列オブジェクトを強制変換するためのXTSオブジェクトにデータフレームを強制変換するためas_xts()as_tibble()が含まtidyquantパッケージを用いた溶液です。

> data_df 
# A tibble: 12 × 2 
     date value 
     <fctr> <fctr> 
1 27.07.2015  100 
2 28.07.2015 100.1504 
3 29.07.2015 100.1957 
4 30.07.2015 100.5044 
5 31.07.2015 100.7661 
6 03.08.2015 100.9308 
7 04.08.2015 100.8114 
8 05.08.2015 100.6927 
9 06.08.2015 100.7501 
10 07.08.2015 100.7194 
11 10.08.2015 100.8197 
12 11.08.2015 100.8133 

まず、あなたのデータを再作成し、我々はあなたのデータフレームを再フォーマットする必要があります。日付と値はどちらもファクタとして格納されており、それぞれ日付と倍精度クラスに入れる必要があります。 tidyquantを読み込み、データフレームを再フォーマットします。 tidyquanttidyverseと金融パッケージをロードするので、他のものをロードする必要はありません。日付は、年月日形式の文字を日付に変換するlubridate::dmyで変換することができます。値は因子から文字へ、次に文字から二重に変わる必要があり、これは入れ子のas.numericas.characterによって行われます。

> library(tidyquant) 
> data_tib <- data_df %>% 
    mutate(date = dmy(date), 
      value = as.numeric(as.character(value))) 
> data_tib 
# A tibble: 12 × 2 
     date value 
     <date> <dbl> 
1 2015-07-27 100.0000 
2 2015-07-28 100.1504 
3 2015-07-29 100.1957 
4 2015-07-30 100.5044 
5 2015-07-31 100.7661 
6 2015-08-03 100.9308 
7 2015-08-04 100.8114 
8 2015-08-05 100.6927 
9 2015-08-06 100.7501 
10 2015-08-07 100.7194 
11 2015-08-10 100.8197 
12 2015-08-11 100.8133 

今、私たちはtidyquant::as_xts()機能を使用してxtsに強制することができます。 date_col = dateと指定してください。

> data_xts <- data_tib %>% 
    as_xts(date_col = date) 
> data_xts 
       value 
2015-07-27 100.0000 
2015-07-28 100.1504 
2015-07-29 100.1957 
2015-07-30 100.5044 
2015-07-31 100.7661 
2015-08-03 100.9308 
2015-08-04 100.8114 
2015-08-05 100.6927 
2015-08-06 100.7501 
2015-08-07 100.7194 
2015-08-10 100.8197 
2015-08-11 100.8133 
関連する問題