Среднее квартиля для нескольких столбцов и нескольких дат
Я пытаюсь найти средний прямой возврат (столбец fwd_rtn) каждого квартиля для каждого столбца (т. Е. Для квартилей для PB, PE, PS) для каждой группы дат (01.01.2016... 04.01.2016)
head(df)
Дата Цена акций PB PE PS fwd_rtn
1 1/1/2016 A 11,90 0,4 0,10 0,57 -0,015
2 01.01.2016 B 3,56 0,8 0,09 0,26 -0,036
3 01.01.2016 C 1.29 1.2 0.18 1.60 0.10
......
4 1/4/2016 A 12.80 0.39 0.13 0.53 -0.01
5 1/4/2016 B 4,03 0,76 0,08 0,23 0,02
6 1/4/2016 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)
который дал мне правильные ответы. Но я изо всех сил пытаюсь сделать это для нескольких столбцов. Я думаю, что я должен использовать dplyr
и gather()
функционировать, но я не знаю как.
1 ответ
Чтобы получить квартили одной переменной по дате, вы можете использовать ave
функция:
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)
Вы должны взглянуть на использование lapply
или же sapply
перемещаться по нескольким столбцам.