Mean-replacing NAs in a 3d array
Hi Tom, it would have been nice (and it is in fact requested by the posting guide) to give a running example instead of letting us construct your data. Anyway, it wasn't too hard with Xa<-array(1:12,dim=c(2,2,3)) Xa[c(2,6,8)]<-NA #so next, create a vector for the colMeans with length 2*2*3, repeating each mean 4 times cM<-rep(colMeans(Xa,na.rm=TRUE,dims=2),each=dim(Xa)[1]*dim(Xa)[2]) #... and use the fact, that most r-objects have also an one-dimensional index (which was used in the construction above as well) Xa[is.na(Xa)]<-cM[is.na(Xa)] hth. T.R. Marshall schrieb:
Hi all I have a 3d array containing missing values.
Xa
, , 1
[,1] [,2]
[1,] 1 3
[2,] NA 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] NA NA
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
I want to replace the missing values with the mean, but the mean of each
'page' in the array (wrong terminology I'm sure). So - for the array
above - [2,1,2] and [2,2,2] should both read '6', and [2,1,1] should be
'2.66667'.
I can obtain a vector of those means by:
colMeans(Xa,na.rm=TRUE,dims=2)
[1] 2.666667 6.000000 10.500000 But what to do next? Help would be appreciated. Also I'm a noob to this mailing list so apologies if I've not given enough detail or failed to find the answer somewhere obvious. Best Tom Marshall, Universiteit van Amsterdam
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.