计算向量的所有元素的累积百分比

时间:2017-02-10 06:42:21

标签: r

我不知道为什么我无法绕过这个,但也许有人可以提供帮助。 我使用for循环完成了以下操作:

v <- c(500,498,457,400,376,300,210,157,64,10,2,2,2,1,1,1,1,1,1,1)
partsum <- 0
total <- sum(v)
percov <- numeric()
for (i in 1:length(v)){
        partsum <- partsum + v[i]
        percov[i] <- 100 * partsum/total
}
percov

但是,我正在处理大量数据,并且for循环非常慢。我觉得在R中肯定有另一种方法可以做到这一点,它可能会更快。类似的东西:

percov <- 100 * partsum/sum(v)

其中每个元素索引处的partum是v的所有元素的总和,其大于或等于该元素的v值。但是我该怎么做呢?

1 个答案:

答案 0 :(得分:3)

我们可以将cumsum的累计和(vector)除以sum的{​​{1}}并乘以100

vector

检查OP方法的输出

percovN <- 100*cumsum(v)/sum(v)