每行具有不同值的矩阵的平均值

时间:2016-09-13 13:31:49

标签: r matrix

我有一个带有回报和NA的数据集。我的目标是为每一行建立三个投资组合。我的问题是我只想使用没有NA的值:

Returns<-matrix(c(3,5,4,13,6,8,12,18,25,NA,15,2,1,12,8,19,NA,NA,NA,NA,13,17,9,4,16,3,5,7,NA,NA),3,10,byrow=T)

每行没有NA的值的计算:

max.value<-matrix(nrow=nrow(Returns),ncol=1)
for (i in 1:nrow(Returns)) {max.value[i,]<-sum(!is.na(Returns[i,]))}

现在,我知道第1行有9个值,第2行有6个值,第3行有8个值:我想要的是:

row1 (9 values without NA): mean(value 1-3)=P1; mean(value 4-6)=P2; mean(value 7-9)
row2 (6 values without NA): mean(value 1-2)=P1; mean(value 3-4)=P2; mean(value 5-6)  
row3 (8 values without NA): mean(value 1-3)=P1; mean(value 4-6)=P2; mean(value 7-8)  

对我而言,投资组合中的价值数量取决于最大值是很重要的。

如果我“按手”解决我的问题,它将如下所示:

P1.1<-mean(Returns[1,1:3])
P1.2<-mean(Returns[2,1:2])
P1.3<-mean(Returns[3,1:3])
P1.RX<-rbind(P1.1,P1.2,P1.3)

P2.1<-mean(Returns[1,4:6])
P2.2<-mean(Returns[2,3:4]) 
P2.3<-mean(Returns[3,4:6])
P2.RX<-rbind(P2.1,P2.2,P2.3)

P3.1<-mean(Returns[1,7:9])

P3.2<-mean(Returns[2,5:6])
P3.3<-mean(Returns[3,7:8])
P3.RX<-rbind(P3.1,P3.2,P3.3)
Returns_new<-cbind(P1.RX,P2.RX,P3.RX)

我想要自动修改此代码(因为我想要更多数据),我的第一个想法是:

P1.test<-matrix(NaN,3,1)
for (i in 1:nrow(Returns){
for (k in 1:(max.value/3)) {P1.test<-mean(Returns[i,k])}}

但它不起作用,我希望任何人都有一个想法,可以帮助我 样,
约旦

0 个答案:

没有答案