0

これが何度か尋ねられたことは知っていますが、問題を回避する正しい方法を見つけることができませんでした. 次のような非常に単純な CSV ファイルをアップロードします。

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

ここで、data.frame を xts に変換して、PerformanceAnalytics パッケージを使用できるようにする必要があります。私の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機能させることができました。これを乗り越えるのを手伝ってくれませんか?

4

1 に答える 1

0

これは、データ フレームを xts オブジェクトに強制し、xts などの時系列オブジェクトをティブル (「きちんとした」データ フレーム) に強制するためのtidyquantパッケージを使用したソリューションです。as_xts()as_tibble()

データを再作成する

> 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データ フレームを読み込んで再フォーマットします。tidyquantと Financial パッケージをロードするtidyverseので、他に何もロードする必要がないことに注意してください。lubridate::dmy日月年形式の文字を日付に変換する日付変換ができます。値は factor から character に移動し、次に character から double に移動する必要があります。これは、 and をネストすることによって行われas.numericますas.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

xtsこれで、関数の使用を強制できtidyquant::as_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
于 2017-03-02T20:28:10.423 に答える