2017-04-20 95 views
0

位数我有一个DF这样的:(R):计算独特的行值统一

> 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 

距离问题付款期限一年的分布。

Usign这个数据和以上给出这样一个DF2:

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

因为我有一个合理的位数概率足够的数据。我想知道如何建立一个循环,以便在这个df2的每一行中按照第一个df分配一个分位数。

+0

尝试'库(data.table); setDT(DF )[,分位数(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) 

,你可以添加na.rm = TRUE为另一种说法,如果你可能会来港

+0

这是一个很棒的解决我有两个相关的问题,如果感兴趣:1)如何在xlsx中编写这个数组。 2)可以表示与给定的数字向量相关联的分位数的循环,更可写 –