dplyr / R 重置累加和

2023-12-23

如果“当前”总和超过某个阈值,我想使用 dplyr 生成带有重置的累积总和。在下面,我想对“a”进行求和。

library(dplyr)
library(tibble)

tib <- tibble(
  t = c(1,2,3,4,5,6),
  a = c(2,3,1,2,2,3)
)

# what I want
## thresh = 5
# A tibble: 6 x 4
#         t     a     g     c
#      <dbl> <dbl> <int> <dbl>
#   1  1.00  2.00     0  2.00
#   2  2.00  3.00     0  5.00
#   3  3.00  1.00     1  1.00
#   4  4.00  2.00     1  3.00
#   5  5.00  2.00     1  5.00
#   6  6.00  3.00     2  3.00

# what I want
## thresh = 4
# A tibble: 6 x 4
#         t     a     g     c
#      <dbl> <dbl> <int> <dbl>
#   1  1.00  2.00     0  2.00
#   2  2.00  3.00     0  5.00
#   3  3.00  1.00     1  1.00
#   4  4.00  2.00     1  3.00
#   5  5.00  2.00     1  5.00
#   6  6.00  3.00     2  3.00

# what I want
## thresh = 6
# A tibble: 6 x 4
#         t     a     g     c
#      <dbl> <dbl> <int> <dbl>
#   1  1.00  2.00     0  2.00
#   2  2.00  3.00     0  5.00
#   3  3.00  1.00     0  6.00
#   4  4.00  2.00     1  2.00
#   5  5.00  2.00     1  4.00
#   6  6.00  3.00     1  7.00

我在这里检查了许多类似的问题(例如如果 r 中的值变为负值,则重置 cumsum https://stackoverflow.com/questions/44512075/resetting-cumsum-if-value-goes-to-negative-in-r)并得到了我希望接近的结果,但没有。

我尝试过的变体

thresh <-5
tib %>%
  group_by(g = cumsum(lag(cumsum(a) >= thresh, default = FALSE))) %>%
  mutate(c = cumsum(a)) %>%
  ungroup()

返回

# A tibble: 6 x 4
      t     a     g     c
  <dbl> <dbl> <int> <dbl>
1  1.00  2.00     0  2.00
2  2.00  3.00     0  5.00
3  3.00  1.00     1  1.00
4  4.00  2.00     2  2.00
5  5.00  2.00     3  2.00
6  6.00  3.00     4  3.00

您可以看到“组”在第一次之后没有被重置。


我想你可以使用accumulate()在这里提供帮助。我还制作了一个包装函数用于不同的阈值

sum_reset_at <- function(thresh) {
  function(x) {
    accumulate(x, ~if_else(.x>=thresh, .y, .x+.y))
  }  
}

tib %>% mutate(c = sum_reset_at(5)(a))
#       t     a     c
#   <dbl> <dbl> <dbl>
# 1     1     2     2
# 2     2     3     5
# 3     3     1     1
# 4     4     2     3
# 5     5     2     5
# 6     6     3     3
tib %>% mutate(c = sum_reset_at(4)(a))
#       t     a     c
#   <dbl> <dbl> <dbl>
# 1     1     2     2
# 2     2     3     5
# 3     3     1     1
# 4     4     2     3
# 5     5     2     5
# 6     6     3     3
tib %>% mutate(c = sum_reset_at(6)(a))
#       t     a     c
#   <dbl> <dbl> <dbl>
# 1     1     2     2
# 2     2     3     5
# 3     3     1     6
# 4     4     2     2
# 5     5     2     4
# 6     6     3     7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dplyr / R 重置累加和 的相关文章

  • 如何删除箱线图上的刻度线

    我试图从箱线图中删除 x 轴刻度线 但保留与刻度线关联的标签 这在基础 R 中可能吗 colors lt c lightskyblue3 gray78 gold1 wheat1 boxplot avgscore module data mi
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 条件字体颜色 R Markdown

    我无法找到一种方法来根据变量的值 gt 0 0 或 r setup include FALSE x lt 4 This is an R Markdown document r if x gt 0 textcolor red Markdown
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 如何使用 tidymodels 和工作流集在同一数据集上拟合多个不同的线性模型

    我想评估同一数据集上多个 主要是 线性回归模型的性能 我想也许使用tidymodels包连同workflowsets workflow set 可能会起作用 我按照这个例子here https workflowsets tidymodels
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐

  • 代码行数旁边的垂直线是什么

    这些线到底是用来做什么的 扩展程序的名称是什么 这些行表示文件中的更改 蓝线表示修改 修改了代码行 绿线表示添加 添加了代码行 红线表示删除 删除了代码行 它们是通过版本控制系统 VCS 扩展 例如 Git 添加的 您可以在上面找到具有相似
  • 基于类和基于对象的语言比较(ECMAScript 规范)

    In a class based object oriented language in general state is carried by instances methods are carried by classes and in
  • 从 MVC 项目访问类库?

    我在一个解决方案中有一个类库项目和 MVC 项目 我的类库具有命名空间 MyStuff Classes 我的 MVC 项目具有命名空间 MyStuff Web 我似乎无法从 mvc 项目访问我的类库 反之亦然 直接或使用 using 指令
  • iPhone 5 的弱光增强模式

    有谁能够在他们的自定义相机应用程序中使用 iPhone 5 的新低光增强模式吗 我尝试了以下代码 但发现没有任何区别 而本机相机应用程序显着提高了亮度 if captureManager backFacingCamera isLowLigh
  • 微服务架构中如何在微服务之间共享java模型

    我正在设计新应用程序的架构 我选择了微服务架构 在我的架构中 我注意到我有不同微服务使用的模型 我想知道是否有一种方法可以在微服务之间共享模型代码 而不是在每个微服务中编写它们 顺便说一句 我正在为我的应用程序使用 spring boot
  • PHP $_POST 数组用于未选中的复选框

    如果我有一个带有两个复选框的表单 它们具有与 name 属性相同的数组 名称 1 1 这些复选框都没有被勾选 我有什么方法可以知道它们存在于表单中吗 如果未选中这些字段 则不会通过 POST 数组发送这些字段 我问这个是因为这些名称值是动态
  • 更改 SQL Server 2005 中数据库图表的所有者

    我需要更改 SQL Server 2005 中数据库图表的所有者 目前它归我所有 domain username diagramName 我想将其更改为 dbo dbo diagramName 所有 我以为我可以使用 sp changeob
  • 如何从 php 脚本设置 cron 作业?

    我是 cron 工作的新手 我研究了一些有关 cron 作业的基础知识 我可以使用 cron 选项卡调用 php 通过在 etc crontab 中使用以下命令 10 root usr bin php var www PATH TO SCR
  • d3.js:将匿名函数作为参数传递给居中力?

    我正在制作一个交互式气泡图 并且正在研究将数据分为两组并移动到屏幕两侧的功能 我在模拟中使用了居中力 因为我认为它比使用forceX 和forceY 能提供更好 更一致的数据显示 但是 我在分割数据时遇到了麻烦 我的想法是 由于您可以将匿名
  • 背景颜色项目组合框 WPF

    我正在做一个 WPF 并有一个组合框 其中包含计算机上可用端口的列表 我想改变这些物品的颜色 我的组合框是这些
  • Grails - 仅供对象所有者访问

    我仍在开发我的第一个 Grails 应用程序 这次 我的问题是限制特定用户对某些操作的访问 假设用户添加一些对象 例如图书 我想仅向管理员和添加书籍的用户授予编辑书籍的权限 我目前正在使用 Acegi 插件 我知道该插件有更新版本 但我不确
  • 如何在 Swift 中编写多行字符串?

    如何将字符串拆分为多行 如下所示 var text String This is some text over multiple lines Swift 4 支持多行字符串文字 https github com apple swift ev
  • Akka actor 使用 Scala 进行单元测试

    我对 Scala 还很陌生 所以请保持温柔 在我当前正在构建的应用程序中 我正在使用 Akka Actor 并且我想编写一些单元测试 我遇到了这个为 Akka Actor 编写单元测试的官方文档 http doc akka io docs
  • 一起使用的 HTML 和 CSS 是否良好?

    最好的使用方法是什么
  • 这段代码真的可以对抗 SQL 注入吗? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 终极清洁 安全功能 https stackoverflow com questions 4223980 php the ultimate clean secure function 我在这里找
  • 无法在python3中安装boto

    我正在尝试从源代码 pypi 安装 boto 但无法使用 python 3 2 安装它 为什么会失败 c boto gt Python32 python exe setup py install Traceback most recent
  • 重铸 *void 函数参数

    我发布了一个问题here https stackoverflow com questions 8434884 nlopt with armadillo data早些时候 我想我可以回答是否有人可以帮助我解决以下问题 我有一个函数 doubl
  • 如何向 Unity 注册 AutoMapper 配置文件

    我有以下 AutoMapper 配置文件 public class AutoMapperBootstrap Profile protected override void Configure CreateMap
  • EProxy URI 在ecore 模型中无法解析

    在我的 Ecore 模型中 来自当前模型外部的所有类型都不会由其代理解析 返回对象的所有字段getType are null并且运行时只填写存储类型URI 这是我的模型的摘录
  • dplyr / R 重置累加和

    如果 当前 总和超过某个阈值 我想使用 dplyr 生成带有重置的累积总和 在下面 我想对 a 进行求和 library dplyr library tibble tib lt tibble t c 1 2 3 4 5 6 a c 2 3