2017-04-20 8 views
0

で分位を計算します。(R):私はこのようなDFを持っているユニークな行値統一

> 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 

それは問題からの支払い期間の1年間の分布です。

Usignこのデータ上でこのようなDF2与えられた:私は、合理的な分位PROBのための十分なデータを持っていたよう

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

を。このdf2の各行に最初のdfに従った分位数を返すループを構築する方法を知りたいと思います。

+0

'ライブラリ(data.table)試してみてください別の引数としてTRUE na.rmを=追加することができます。SETDT(DFを)[、quantile(dayref)、。(Client.code)] ' – akrun

答えて

0

私たちはそれらのベクトルを追加することによって、あなたは、特定のパーセンタイルを指定することができますdata.table

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

それともtidyverse

+0

これは動作します。しかし、本当に有用ではない、おそらく私の質問が十分ではなかったためです。これは、過去の分布に基づいて分位点を特定するために、与えられたベクトルを用いることが可能である。おかげで –

+0

@ÁlvaroRodríguezあなたはあなたの質問を更新したり、別の条件がある場合は新しい質問を作成してください – akrun

+0

これは今編集されます。 –

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

で使用することができます

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

あなたはこの

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

のように策定する必要があるかもしれませんそして、あなたは、NASを持っている可能性がある場合は、

+0

素晴らしい解決策。興味があれば、私は2つの質問を関連づけています:1)xlsxにこの配列を書く方法。 2)与えられた数のベクトルに関連付けられた分位数を表現できるループ、より書き込み可能 –

関連する問題