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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。