R:如何基于数据帧中的前一行创建第90个分位数的新列

时间:2017-03-14 20:04:36

标签: r dataframe dplyr

data.frame(c = c(1,7,11,4,5,5))

   c
1  1
2  7
3 11
4  4
5  5
6  5

所需的数据框

   c c.90th
1  1   NA
2  7   1
3 11   6.4
4  4   10.2
5  5   9.8
6  5   9.4

对于第一行,我希望它查看前面的行,没有并获得第90个分位数NA。 对于第二行,我希望它查看前面的行,1并获得第90个分位数,1。 对于第三行,我希望它查看前面的行1,7,并获得第90个分位数,6.4。 等

2 个答案:

答案 0 :(得分:1)

使用<的解决方案也适用于群组:

>

答案 1 :(得分:0)

尝试:

dff <- data.frame(c = c(1,7,11,4,5,5))

dff$c.90th <- sapply(1:nrow(dff),function(x) quantile(dff$c[0:(x-1)],0.9,names=F))

输出:

 c  c.90th
  1   NA  
  7  1.0  
 11  6.4  
  4 10.2  
  5  9.8  
  5  9.4