R中64后的累计和(Conditional Cumulative sum)

Cumulative sum after 64 in R(Conditional Cumulative sum)

我是 R 的新手。我不确定如何在 R 中执行以下功能。我可以在 excel 中执行此操作。但无法在 R 中完成。有人可以帮助我吗?

我想得到计数器值达到64后的累加和,

以下是我的数据,

x
57
57
57
57
57
57
58
58
58
58
61
61
62
62
1
1
11
16
16
16
16
16
16
22
22
22
27
28

我想要计数达到 64 后的累计总和。我不确定如何在 R 中做到这一点。

下面是我需要的输出,

x
57
57
57
57
57
57
58
58
58
58
61
61
62
62
65
65
76
81
81
81
81
81
81
87
87
87
92
93

有人可以帮忙吗?

                                                                                          Thanks

如果您的数据重置为 64 位并继续,并且您希望它保留 64 位,请尝试:

diffs <- c(dat$x[1], diff(dat$x)) 
diffs[diffs < 0] <- 64 + diffs[diffs < 0]
cumsum(diffs)

一个解释:

第一行从一个数字到下一个数字的所有差异,从初始值开始(在示例中为 57)。

第二行找到所有负差异值,并将它们更改为 64 + 原来的值 - 如果是 62 更改为 2,我们需要添加 4: 2 以达到 64,然后再增加 2。

第三行取cumsum给出最终值