簡體   English   中英

如何在R中滿足特定條件時獲得連續出現的平均值

[英]How to get the average of consecutive occurrences when meet certain condition in R

我有一個data ,其中包含按交易日期訂購的客戶付款時間表。我想計算連續失敗付款的平均次數和連續成功付款的平均次數。表格如下所示:

customer_id |transaction_id.|failed_or_success  | transaction_date 
  1         |1              |success            |2021-01-01
  1         |2              |success            |2021-01-15
  1         |3              |failed             |2021-01-30
  1         |4              |success            |2021-02-15

例如,平均連續支付成功次數為(2+1)/2=1.5 ,前2來自 transaction_id 1 & 2,第二個1來自 transaction_id 4。而連續支付失敗的平均次數為在本例中為 1。 最終表格將如下所示:

cus_id |tran_id.|f_or_s |tran_date  |avg_consec_fail|avg_consec_success
  1    |1       |success|2021-01-01 |1              |1.5
  1    |2       |success|2021-01-15 |1              |1.5
  1    |3       |failed |2021-01-30 |1              |1.5
  1    |4       |success|2021-02-15 |1              |1.5

我如何使用R/dplyr實現這一點?

您可以嘗試使用rle

數據

df <- read.table(text = "customer_id transaction_id. failed_or_success   transaction_date 
  1         1              success            2021-01-01
  1         2              success            2021-01-15
  1         3              failed             2021-01-30
  1         4              success            2021-02-15", header = TRUE)

代碼

df %>%
  mutate(avg_consec_success = mean(rle(failed_or_success)$length[rle(failed_or_success)$values != "failed"]))

  customer_id transaction_id. failed_or_success transaction_date avg_consec_success
1           1               1           success       2021-01-01                1.5
2           1               2           success       2021-01-15                1.5
3           1               3            failed       2021-01-30                1.5
4           1               4           success       2021-02-15                1.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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