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

  • 本文关键字:百分比 元素 向量 计算 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)

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

我们可以将

vector的累积和(cumsum(除以vectorsum,再乘以100

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

检查 OP 方法的输出

identical(percovN, percov)
#[1] TRUE

最新更新