Среднее квартиля для нескольких столбцов и нескольких дат

Я пытаюсь найти средний прямой возврат (столбец 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 перемещаться по нескольким столбцам.

Другие вопросы по тегам