我有一个带零和正数的向量.我只想总结零之间的数字.
一个简单的例子:
x <- c(0,0,0,0,0,1,23,24,54,12,1,23,0,0,0,0,1,23,56,76,0,1,13)
Run Code Online (Sandbox Code Playgroud)
也就是说,我要总结的元素1,23,24,54,12,1,23,1,23,56,76和1,13.
因此138,我想要的输出是:
156和14.
我发现这个问题非常相似,但它是在Python上: Python中零之间的列表元素
谢谢.
我们可以使用tapply,创建每个组的组cumsum和使用sum.
new_x <- tapply(x, cumsum(x == 0), sum)
new_x
# 1 2 3 4 5 6 7 8 9 10
# 0 0 0 0 138 0 0 0 156 14
Run Code Online (Sandbox Code Playgroud)
由于所有数字都是正数,我们可以忽略0的数字并过滤值大于0的数字.
new_x[new_x > 0]
# 5 9 10
#138 156 14
Run Code Online (Sandbox Code Playgroud)
我们也可以用sapply和遵循相同的逻辑split
sapply(split(x, cumsum(x==0)), sum)
Run Code Online (Sandbox Code Playgroud)