2016-04-14 12 views
0

各日付グループの各列(つまり、PB、PE、PSの四分位数)の各四分位の平均前方戻り値(列fwd_rtn) 2016分の1 ... 2016年1月4日)複数の列と複数の日付の四分位の平均

head(df) 

日の株価PB PE PSのfwd_rtn
1 2016年1月1日11.90 0.4 0.10 0.57 -0.015
2 2016年1月1日B 3.56 0.8 0.09 0.26 -0.036
3 1/1/2016 C 1.29 1.2 0.18 1.60 0.10
......
4 1/4/2016 A 12.80 0.3 9 0.13 0.53 -0.01
5 2016年1月4日B 4.03 0.76 0.08 0.23 0.02
6 2016年1月4日C 1.83 0.87 0.14 1.16 0.03

これまでのところ私は1の平均リターンを見つけることができましたこのコードを使用して1つの日付の列

df$qPB <- cut(df$PB, breaks = quantile(df$PB, c(0,.25,.5,.75,1)),include.lowest = TRUE) 

aggregate(df$fwd_rtn,list(qPB = df$qPB),FUN=mean) 

私に正しい答えを与えました。しかし、私は複数の列のためにそれをするのに苦労しています。私はdplyrgather()機能を使用するはずだと思うが、私はどのように知っているのだろうか。

+0

私はいくつかのクラムを落としてください/私はこれを解決する方法について一般的な方向に私を指摘することができますか?助けてくれてありがとう! –

+0

誰でも適用機能を使ってループする方法を教えてください。私は非常に混乱しているので、分位の部分と集計を見つける。その2つの部分ので、私はそれらの両方で別々に適用機能を使用する必要がありますか?どのように私は2つの部分をリンクするのですか?どんな助けもありがとうございます。ありがとう皆様 –

答えて

0

あなたはave機能を使用することができ、日付によって単一の変数の四分位数を取得するために:あなたは複数の列を移動しlapplysapplyを使用して見てみる必要があります

df$qPB <- ave(df$PB, df$Date, FUN= function(i) cut(i, breaks = quantile(df$PB, 
              c(0,.25,.5,.75,1)),include.lowest = TRUE) 
# a minor addition to aggregate 
aggregate(df$fwd_rtn, list("qPB"=df$qPB, "date"=df$Date), FUN=mean) 

を。

+0

ありがとうございましたlmo。最初はエラーでしたが、 "date" = Dateを "date" = df $ Dateに変更した後は大丈夫でした。次に、それを複数の列に使用する方法です。ラップやサプリーの使用を試みます。 –

+0

申し訳ありません私はまだlapplyを使用してそれを行う方法を取得することはできません。私はそれを最後に結果を結びつけることを目標にしていたので、それは大丈夫です。つまり、PSのために:df $ qPS < - cut(df $ PS、breaks = quantile(df $ PS、c(0) 、.25、.5、.75,1)、na.rm = TRUE)、include.lowest = TRUE)。 PSにNaNがいくつか存在するため、iveはna.rm = TRUEを追加しました。私はすべての列を通過した後に結果をcbindとき、これは問題を提起していない? –