簡體   English   中英

(R):通過唯一的行值統一計算分位數

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM