我是一个 R 新手,所以希望这对你们中的一些人来说是一个可以解决的问题。我有一个包含超过一百万个数据点的数据框。我的目标是计算一个改变起点的加权平均值。
为了说明考虑这个框架( data.frame(matrix(c(1,2,3,2,2,1),3,2)) )
X1 X2
1 1 2
2 2 2
3 3 1
其中 X1 是数据,X2 是采样权重。
我想计算 X1 从起点 1 到 3、2:3 和 3:3 的加权平均值。
我简单地写了一个循环:
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 命令来实现不同的起点,从而提高性能?
问候,鲁本