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

标签 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 值的所有元素的总和。但是我该怎么做呢?

最佳答案

我们可以除以 cumsum 的累积和 ( vector )由 sumvector并乘以 100

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

检查 OP 方法的输出
identical(percovN, percov)
#[1] TRUE

关于r - 计算向量所有元素的累积百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42153039/

相关文章:

r - 使用 data.table 加速 rollapply

r - 是否为奇异矩阵 : conflict between determinant and rank

r - scale_color_manual() 不起作用

r - 类排列之间唯一

r - 如何在 rmarkdown 的 ioslides 演示文稿的标题中强制换行?

r - 使用 R 为单个参数创建具有多个名称的函数

r - 将每个 id 和法律(带有开始和结束年份)的一行数据框转换为一个文件,每个 id 和年份都有一行

仅返回列中的最后一个值(国家/地区)

r - R 中的 3d 曲面图与 plotly

r - 如何在R中按列值范围过滤行?