r - data.table R 滞后条件和总和值
问题描述
我有一些这样的数据:
test <- data.frame(id = c(1,2,1,5,5,5,6,7),
time = c(0,1,4,5,6,7,9,10),
cond = c("a","a","b","a","b","b","b","b"),
value = c(5,3,2,4,0,3,1,2),
stringsAsFactors=F)
setDT(test)[,order := order(time),id][order(id,order)]
id time cond value order
1 0 a 5 1
2 1 a 3 1
1 4 b 2 2
5 5 a 4 1
5 6 b 0 2
5 7 b 3 3
6 9 b 1 1
7 10 b 2 1
我想返回条件=“a”的值,或者将条件=“b”的行的先前值相加,并将它们归因于按id分组的前一个“a”行。在“b”行没有前面的“a”行的情况下,该行将被删除。所以前面的例子会产生这个数据表。
id time cond value order sum
1 0 a 5 1 7
2 1 a 3 1 3
5 5 a 4 1 7
像这样的函数适用于序列中只有 1 个“b”行的简单情况:
library(zoo)
test[cond != 'b', prev := value]
test[, prev := na.locf(prev), id]
但是我不确定如何对以前的值求和,而不仅仅是返回前一行。
解决方案
推荐阅读
- postgresql - PostgreSQL 查询每运行五次/六次就非常慢
- java - 难以在 Firebase 中将对象保存为子对象(使用 Android Studio)
- c++ - C26444 避免使用自定义构造和销毁的未命名对象 (es.84)
- c# - ASP.NET MVC5 属性路由 - 只有一个匹配操作的模棱两可的操作异常
- django - 如何编写一个结合了四个模型和外键的 DRF 序列化器?
- typescript - 键入我们知道是字符串的对象的属性
- java - 基本身份验证 Java SOAP WebService 客户端
- java - 当我从用户那里得到输入时,为什么我的 java 代码会抛出错误?
- reactjs - 嵌套条件路由渲染
- delphi - 在 Delphi 10.3 中找不到单元“TeeJPEG”