當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dplyr cumall 任何、全部和平均值的累積版本


dplyr 提供了 cumall()cumany()cummean() 來完成 R 的一組累積函數。

用法

cumall(x)

cumany(x)

cummean(x)

參數

x

對於 cumall()cumany() ,邏輯向量;對於 cummean() 為整數或數值向量。

x 長度相同的向量。

累積邏輯函數

這些與 filter() 結合使用特別有用:

  • cumall(x) :第一個 FALSE 之前的所有情況。

  • cumall(!x) :第一個 TRUE 之前的所有情況。

  • cumany(x) :第一個 TRUE 之後的所有情況。

  • cumany(!x) :第一個 FALSE 之後的所有情況。

例子

# `cummean()` returns a numeric/integer vector of the same length
# as the input vector.
x <- c(1, 3, 5, 2, 2)
cummean(x)
#> [1] 1.00 2.00 3.00 2.75 2.60
cumsum(x) / seq_along(x)
#> [1] 1.00 2.00 3.00 2.75 2.60

# `cumall()` and `cumany()` return logicals
cumall(x < 5)
#> [1]  TRUE  TRUE FALSE FALSE FALSE
cumany(x == 3)
#> [1] FALSE  TRUE  TRUE  TRUE  TRUE

# `cumall()` vs. `cumany()`
df <- data.frame(
  date = as.Date("2020-01-01") + 0:6,
  balance = c(100, 50, 25, -25, -50, 30, 120)
)
# all rows after first overdraft
df %>% filter(cumany(balance < 0))
#>         date balance
#> 1 2020-01-04     -25
#> 2 2020-01-05     -50
#> 3 2020-01-06      30
#> 4 2020-01-07     120
# all rows until first overdraft
df %>% filter(cumall(!(balance < 0)))
#>         date balance
#> 1 2020-01-01     100
#> 2 2020-01-02      50
#> 3 2020-01-03      25

源代碼:R/funs.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Cumulativate versions of any, all, and mean。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。