簡體   English   中英

滾動 4 周平均轉化率,在 R 或 Power BI 中

[英]Rolling 4 week average conversion rate, in R or Power BI

我正在嘗試創建滾動的 4 周平均轉化率。 LTA 列是轉化率,等於 (Appts/Leads)。 現在,LTA 是一周一周的。 我需要創建一個 4 滾動轉換率的新列。 這是數據。

Week    Leads   Appts   LTA
4/17/2022   205  83    40.49%
4/24/2022   126  68    53.97%
5/1/2022    117  40    34.19%
5/8/2022    82   38    46.34%
5/15/2022   60   32    53.33%
5/22/2022   45   19    42.22%
5/29/2022   25   19    76.00%

因此,如果我們從底部開始,5 月 29 日的 RollingAvg 將是 (19+19+32+38)/(25+45+60+82) = 50.943 %

對於 5 月 22 日這一周,數字將回滾一周,因此為 (19+32+38+0)/(45+60+82+117) = 29.276 %

幫助將不勝感激。

transform(data.frame(lapply(df, zoo::rollsum, k=4)), roll = Appts/Leeds * 100)

  Leeds Appts      roll
1   530    38  7.169811
2   385    70 18.181818
3   304    89 29.276316
4   212   108 50.943396

DAX 中計算列的簡單解決方案:

RollingAvg = 
VAR _currentDate = [Week]
VAR _minDate = _currentDate - 4*7
RETURN
CALCULATE ( 
    DIVIDE ( 
        SUM ( 'Table'[Appts] )  ,
        SUM ( 'Table'[Leads] )
    ),
    // Lift filters on table to have all rows visible
    ALL ( 'Table' ) , 
    // Add constraints to dates for a 4-week average
    'Table'[Week] <= _currentDate , 
    'Table'[Week] > _minDate 
)

或者更好的是,一種不占用數據模型空間的度量:

RollingAvgMeasure = 
/*
Calculates the 4-week rolling average if used with the Week dimension.
Else calculates the total rolling average.
*/
VAR _currentDate = MAX ( 'Table'[Week] )
VAR _minDate = _currentDate - 4*7
VAR _movingAvg = 
CALCULATE ( 
    DIVIDE ( 
        SUM ( 'Table'[Appts] ) ,
        SUM ( 'Table'[Leads] )
    ),
    ALL ( 'Table' ) ,
    'Table'[Week] <= _currentDate ,
    'Table'[Week] > _minDate 
)
VAR _total = DIVIDE ( SUM ( 'Table'[Appts] ) , SUM ( 'Table'[Leads] ) )
RETURN
// Replace if-statement with only return of _movingAvg to display the latest 4-week value.
IF (
    ISFILTERED ( 'Table'[Week] ),
    _movingAvg , 
    _total
)

暫無
暫無

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

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