2017-04-20 2 views
0

Ich habe eine df wie folgt aus:(R): Berechnen Quantil durch eindeutige Zeilenwert Vereinigung

> df<-data.frame(Client.code = 
c(100451,100451,100523,100523,100523,100525),dayref = c(24,30,15,13,17,5)) 
> df 
    Client.code dayref 
1  100451  24 
2  100451  30 
3  100523  15 
4  100523  13 
5  100523  17 
6  100525  5 

Es ist eine einjährige Verteilung der Zahlungen Zeitraum von Ausgabe.

usign diese Daten über und ein df2 wie folgt gegeben:

Client.Code Days 
1 100451   16 
1 100523   16 
1 100460   35 

Wie ich genügend Daten für eine angemessene Quantils prob haben. Ich werde gerne wissen, wie man eine Schleife erstellt, um jeder Zeile in diesem df2 von Tagen ein Quantil gemäß dem ersten df zuzuweisen.

+0

Versuchen 'Bibliothek (data.table) haben könnte; setDT (df) [, quantile (dayref),. (Client.code)] ' – akrun

Antwort

0

Wir verwenden data.table

library(data.table) 
setDT(df)[, .(Quantile = quantile(dayref)), Client.code] 

Oder mit tidyverse

+0

Es funktioniert. Aber nicht wirklich nützlich, wahrscheinlich weil meine Frage nicht gut genug war. Mit einem gegebenen Vektor ist es möglich, ein Quantil zu vergeben, das auf der Vergangenheitsverteilung basiert. Danke –

+0

@ ÁlvaroRodríguez Können Sie bitte aktualisieren Sie Ihre Frage noch erstellen Sie eine neue Frage, wenn Sie andere Bedingung haben – akrun

+0

Es ist jetzt bearbeitet. –

0
tapply(df$dayref, df$Client.code, quantile) 

Sie spezifische Perzentile durch Hinzufügen eines Vektors von ihnen angeben

tapply(df$dayref, df$Client.code, quantile, 1:19/20) 

Sie müssen möglicherweise ähnliche

tapply(df$dayref, df$Client.code, quantile, probs = 1:19/20) 

formulieren Und Sie können na.rm = TRUE als ein weiteres Argument hinzufügen, wenn Sie NAs

+0

Es ist ein großartige Lösung. Ich habe zwei Fragen, die ich herausfinden werde, wenn interessiert: 1) wie man dieses Array in xlsx schreibt. 2) eine Schleife, die das mit einem gegebenen Vektor von Zahlen verbundene Quantil, mehr beschreibbar, ausdrücken könnte –

Verwandte Themen