R中64后的累计和(条件累计和)

时间:2015-07-29 01:46:55

标签: r conditional-statements 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

1 个答案:

答案 0 :(得分:2)

如果您的数据重置为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给出最终值。