我正在尝试计算差异,然后最终计算变量差异的累积总和。计算以具有两个水平的因子为条件,并且每次因子来回交替时都需要重新开始计算。
让我们考虑x
一个时间戳,并且ant
是一个检测个人的天线。
希望我的样本数据能说明这一点。
使用 dplyr 我已经尝试过group_by(ant)
,但是当随后在另一根天线上检测到个人时,这并没有使差异变回零。
我发现其他帖子描述了重新启动的累积总和,但没有一个能完全理解我想要完成的事情。
我与 dplyr 无关,但我正在寻求帮助以保持这种可扩展性。
set.seed(14)
test <- data.frame(x = sort(x= round(runif(20,0, 10), 2), decreasing =
F),
ant = sample(c("n", "s"), replace = T, size = 20))
library(dplyr)
test %>%
group_by(ant) %>%
mutate(diff = x - lag(x))
我正在寻找的结果是:
x ant diff
1.64 n 0
2.54 n 0.9
3.53 s 0
3.82 s 0.29
4.28 s 0.46
4.74 s 0.46
4.86 n 0
5.11 s 0
5.53 s 0.42
5.95 n 0
6.38 s 0
6.73 n 0
7.4 s 0
8.51 s 1.11
8.52 s 0.01
8.57 n 0
8.91 s 0
9.33 n 0
9.57 s 0
9.83 s 0.26
从这里我应该能够弄清楚如何获得每个因素的累积和。