我是一個R新手,所以希望這是你們中的一些人可以解決的問題。 我有一個數據幀包含超過一百萬個數據點。我的目標是以改變的起點計算加權平均數。替換for循環與應用以提高性能(與weighted.mean)
爲了說明考慮這個幀(data.frame(矩陣(C(1,2,3,2,2,1),3,2)))
X1 X2
1 1 2
2 2 2
3 3 1
其中X1是數據和X2是採樣權重。
我想計算從起點1到3,從2:3到3:3的X1的加權平均值。
有了一個循環,我只是寫道:
B <- rep(NA,3) #empty result vector
for(i in 1:3){
B[i] <- weighted.mean(x=A$X1[i:3],w=A$X2[i:3]) #shifting the starting point of the data and weights further to the end
}
用我的真實數據,這是不可能的,因爲計算每個迭代data.frame改變和計算需要數個小時沒有結果。
有沒有辦法用apply命令來實現varry的起始點,這樣performance就會增加?
問候, 魯
我不明白爲什麼你的數據框必須改變。如果您的實際數據與您的示例有一些重要差異,那麼我們應該如何構建一個適用於您的真實數據的解決方案? – joran 2012-03-07 20:28:07
對不起,這可能出錯了。數據幀沒有改變,但由於改變的起始點,在每次迭代中,爲原始數據幀的新分部計算加權平均值。 – Ruben 2012-03-07 21:22:39