如何在R中创建自累积向量

时间:2010-10-08 02:28:08

标签: r

我认为这很容易,但我的R功夫很弱。我试图以累积方式创建自己的向量。这段代码有效,但我想要更优雅和自动化的东西。我有数百万行需要累积。

a <- c(4,4,5,1,9)
a <- a[order(-a[])]
k <- a[1:length(a)]/sum(a)
w <- c(k[1],k[1]+k[2],k[1]+k[2]+k[3],k[1]+k[2]+k[3]+k[4],k[1]+k[2]+k[3]+k[4]+k[5])
w

2 个答案:

答案 0 :(得分:3)

您的意思是cumsum()吗?

> a <- c(4,4,5,1,9)
> a <- a[order(-a[])]            # just calling sort is shorter too
> k <- a[1:length(a)]/sum(a)     # long way  
> k 
[1] 0.391304 0.217391 0.173913 0.173913 0.043478
> k <- a/sum(a)                  # same, but shorter
> k  
[1] 0.391304 0.217391 0.173913 0.173913 0.043478
> ck <- cumsum(k) 
> ck  
[1] 0.39130 0.60870 0.78261 0.95652 1.00000 
>   

编辑我忽略了另一个简化:

> a <- c(4,4,5,1,9)
> ck <- cumsum( sort(a, decr=TRUE) / sum(as) ) 
> ck  
[1] 0.39130 0.60870 0.78261 0.95652 1.00000 
>   

您希望此处sort()而不是order()加上索引。

答案 1 :(得分:-1)

Bing是我的朋友......我找到了cumsum()函数。