2017-12-27 4 views
0

私は本当に基本的な質問があると思いますが、私は自分の本やGoogleで何か助けを見つけることができません。私は毎月の返品から年間返品が必要です。R:毎月の返品方法月額返還方法

私は機能しなかった集計機能を試しました。だから、私はこの公式をPerformanceAnalyticsパッケージから使用することに決めましたが、私は毎年からではなく1つの数だけを取得します。あなたがRの基本と簡単な方法を持っているなら、私はそれを好むでしょう。

Return.annualized(ODB_REK$V3, scale = 12, geometric = FALSE) 

日付は、ODB_REKというDataFrameに格納されます。

'data.frame': 1104 obs. of 3 variables: 
$ V1: Date, format: "1926-01-30" "1926-02-27" ... 
$ V2: num -0.0104 -0.0245 -0.1156 0.0898 0.0369 ... 
$ V3: num -0.0104 -0.0248 -0.1228 0.086 0.0363 ... 

マイデータ:

8610 2015-01-30 -0.045457722924783298 
8710 2015-02-27 0.061754336389734224 
8810 2015-03-31 -0.008931769762681013 
8910 2015-04-30 0.065063695709261307 
9010 2015-05-29 -0.002081164120491289 
9110 2015-06-30 -0.042074862364842577 
9210 2015-07-31 -0.004127506447239640 
9310 2015-08-31 -0.082799169893954930 
9410 2015-09-30 -0.019941516940899878 
9510 2015-10-30 -0.034313015625708092 
9610 2015-11-30 0.004613342153957855 
9710 2015-12-31 -0.012995071374819037 
9810 2016-01-29 -0.097864238637579010 
9990 2016-02-29 0.058956407591106048 
1001 2016-03-31 0.144829082708177265 
1011 2016-04-29 -0.037060328465702078 
1021 2016-05-31 0.061671602952122026 
1031 2016-06-30 -0.012830965901229322 
1041 2016-07-29 0.056609040739955464 
1051 2016-08-31 -0.002292626059884113 
1061 2016-09-30 -0.000189017862750737 
1071 2016-10-31 -0.033022283173137955 
1081 2016-11-30 0.063047097017319087 
1091 2016-12-30 0.022974063559821404 

あなたが提供できるすべてのヘルプは大歓迎されます。

+0

をしてください、あなたは '集計()'関数と、なぜそれが「機能しなかった」としようとしているかを示します。ありがとうございました。 – Uwe

+0

ちょっとUwe、私はこれを試しました:Test_ODB < - 集計(ODB_REK $ V3、FUN =合計、頻度= 12) – Kindou

+0

あなたは 'Return.annualized'または' returnが必要ですか?累積 '? – Onyambu

答えて

0

あなたの例のように毎月のデータが与えられた年の年間収益を得るには、毎月の返品を合成する必要があります。これをテストするには、Excelの配列式を入力します:Annual =(Product(1 + monthlydata)-1)。

これはR使用してデータセットのために働く必要があります。

# Load packages 
library(lubridate) 
library(dplyr) 

# Create reproducible example 
mydates <-c("2015-01-30", 
      "2015-02-27", 
      "2015-03-31", 
      "2015-04-30", 
      "2015-05-29", 
      "2015-06-30", 
      "2015-07-31", 
      "2015-08-31", 
      "2015-09-30", 
      "2015-10-30", 
      "2015-11-30", 
      "2015-12-31", 
      "2016-01-29", 
      "2016-02-29", 
      "2016-03-31", 
      "2016-04-29", 
      "2016-05-31", 
      "2016-06-30", 
      "2016-07-29", 
      "2016-08-31", 
      "2016-09-30", 
      "2016-10-31", 
      "2016-11-30", 
      "2016-12-30" 
      ) 
mydates <- as.Date(mydates) 

myreturns <- c(-0.045457722924783298, 
       0.061754336389734224, 
       -0.008931769762681013, 
       0.065063695709261307, 
       -0.002081164120491289, 
       -0.042074862364842577, 
       -0.004127506447239640, 
       -0.082799169893954930, 
       -0.019941516940899878, 
       -0.034313015625708092, 
       0.004613342153957855, 
       -0.012995071374819037, 
       -0.097864238637579010, 
       0.058956407591106048, 
       0.144829082708177265, 
       -0.037060328465702078, 
       0.061671602952122026, 
       -0.012830965901229322, 
       0.056609040739955464, 
       -0.002292626059884113, 
       -0.000189017862750737, 
       -0.033022283173137955, 
       0.063047097017319087, 
       0.022974063559821404 
       ) 

# Create data frame 
df <- data.frame(dates = mydates, monthly_returns = myreturns) 

# Group by year, then compound the monthly returns and subtract 1 to get annual return 
df %>% 
    group_by(year(dates)) %>% 
    summarize(annual_return = prod(1 + monthly_returns) - 1) 


# A tibble: 2 x 2 
    `year(dates)` annual_return 
      <dbl>   <dbl> 
1   2015 -0.1234031 
2   2016  0.
+0

完璧に動作します、ありがとう! – Kindou

+0

うれしいことに助けてください。 – DaveM

-1
library(lubridate) 
library(dplyr) 

ODB_REK%>% 
mutate(year = year(date))%>% 
group_by(year)%>% 
summarise(annual_return = sum(monthly_return)) 

(私はあなたのデータがあったと思うが)。

date(文字列でなければなりません。linkを参照)は日付変数に対応し、metricは最後の変数に対応します。

+0

私のデータは次のように保存されます: 'data.frame':\t 1104 obs。 3変数のうち $ V1:日付、形式: "1926-01-30" "1926-02-27" ... $ V3:num -0.0104 -0.0248 -0.1228 0.086 0.0363 ...エラーメッセージが表示されますこのコードを試してみてください(これらのSymbolysはdplyrパッケージか、ODB_REK $ V3%のエラーです)%mutate(年=年月日)%>%group_by(年)%>%: 関数が見つかりませんでした"%>%" – Kindou

+1

'dplyr'がロードされていることを確認してください。 – InfiniteFlashChess

+0

あなたは変数型と計算対象を区別できる必要があります。データセットをOP内に指定する必要があります。 – InfiniteFlashChess

関連する問題