2016-04-14 9 views
0

Ich versuche, die mittlere Vorwärtsrendite (Spalte fwd_rtn) jedes Quartils für jede Spalte (dh für Quartile für PB, PE, PS) für jede Datumsgruppe zu finden (1/1/2016 ... 1/4/2016)Mittelwert des Quartils für mehrere Spalten und mehrere Daten

head(df) 

Aktienauswahltag Preis PB PE PS fwd_rtn
1 2016.01.01 A 11,90 0,4 0,10 0,57 -0,015
2 1/1/2016 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 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

Bisher habe ich in der Lage, die mittlere Gegenleistung für 1 zu finden, Spalte für 1 Datum mit diesem Code

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) 

was gab mir die richtigen Antworten. Aber ich kämpfe, um es für die mehrfachen Spalten zu tun. Ich denke, ich sollte dplyr und die gather() Funktion verwenden, aber ich weiß nicht wie.

+0

Kann mir bitte jemand ein paar Krümel zukommen lassen/mich auf eine allgemeine Richtung hinweisen, wie ich das bitte lösen kann? Vielen Dank für die Hilfe! –

+0

Kann mir bitte jemand helfen, wie man die Anlegefunktion durchläuft? Ich bin sehr verwirrt wegen der Suche Quantil Teil .. und dann das Aggregat. Seine zwei Teile, also sollte ich die Anwenden-Funktion auf sie beide getrennt verwenden? Wie verbinde ich die 2 Teile? Jede Hilfe wird geschätzt. Danke an alle –

Antwort

0

Um Quartile einer einzelnen Variablen nach Datum können Sie die ave Funktion:

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) 

Sie sollten einen Blick lapply oder sapply bei Verwendung durch mehrere Spalten zu bewegen.

+0

Danke viel lmo. Es gab mir zuerst einen Fehler, aber es war ok, nachdem ich "Datum" = Datum zu "Datum" = df $ Datum änderte. Als nächstes wird gezeigt, wie man es für die verschiedenen Spalten verwendet. Wird versuchen, das vorgeschlagene Plätschern oder Sapply zu verwenden. –

+0

Entschuldigung lmo Ich kann immer noch nicht, wie man es mit Hilfe von lapply. aber das ist in Ordnung, weil ich es einzeln gemacht habe (mit dem Ziel, die Ergebnisse am Ende zu verbinden), dh für PS habe ich: df $ qPS <- cut (df $ PS, Brüche = Quantil (df $ PS, c (0 , .25, .5, .75,1), na.rm = TRUE), include.lowest = TRUE). Beachten Sie, dass ive einen na.rm = TRUE hinzugefügt hat, da es einige NaNs in PS gibt. Ist das nicht ein Problem, wenn ich die Ergebnisse nach Durchlaufen aller Spalten gebunden habe? –