[英](R): Calculate quantile by unique row value unification
我有這樣的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
從發行開始,付款期限為一年。
在上面對這個數據進行Usign賦值,然后給出一個df2:
Client.Code Days
1 100451 16
1 100523 16
1 100460 35
因為我有足夠的數據來尋找合理的分位數概率。 我想知道如何構建一個循環,以根據第一個df在這df2天內將分位數分配給每個行。
我們可以使用data.table
library(data.table)
setDT(df)[, .(Quantile = quantile(dayref)), Client.code]
或與tidyverse
library(dplyr)
library(tidyr)
df %>%
group_by(Client.code) %>%
summarise(Quantile = list(quantile(dayref))) %>%
unnest
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,則可以將na.rm = TRUE添加為另一個參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.