dplyr 提供了 cumall()
、 cumany()
和 cummean()
來完成 R 的一組累積函數。
累積邏輯函數
這些與 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 dplyr copy_to 將本地數據幀複製到遠程src
- R dplyr consecutive_id 為連續組合生成唯一標識符
- R dplyr coalesce 找到第一個非缺失元素
- R dplyr context 有關“當前”組或變量的信息
- R dplyr compute 強製計算數據庫查詢
- R dplyr case_match 通用向量化 switch()
- R dplyr c_across 合並多列的值
- R dplyr cross_join 交叉連接
- R dplyr count 計算每組中的觀察結果
- R dplyr case_when 通用向量化 if-else
- R dplyr group_trim 修剪分組結構
- R dplyr slice 使用行的位置對行進行子集化
- R dplyr sample_n 從表中采樣 n 行
- R dplyr row_number 整數排名函數
- R dplyr band_members 樂隊成員
- R dplyr mutate-joins 變異連接
- R dplyr nth 從向量中提取第一個、最後一個或第 n 個值
- R dplyr group_split 按組分割 DataFrame
- R dplyr mutate 創建、修改和刪除列
- R dplyr order_by 用於排序窗口函數輸出的輔助函數
- R dplyr percent_rank 比例排名函數
- R dplyr recode 重新編碼值
- R dplyr starwars 星球大戰人物
- R dplyr desc 降序
- R dplyr between 檢測值落在指定範圍內的位置
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Cumulativate versions of any, all, and mean。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。