I know it's a little late, but I was looking for the same thing and 
couldn't find it. I've made some slight adjustments to some code I found on 
github and made functions for nanmean and nanstd. I did not optimize for 
performance and wanted them to be able to handle arrays of various sizes.  

NANMEAN:

function nanmean(x::Array)

   z=similar(x)
   fill!(z,1)
   z[isnan(x)]=0
   numb_not_NaN_in_x=sum(z)

   nansum_x=sum(x) do x isnan(x) ? 0 : x end #from 
https://gist.github.com/milktrader/5213361
   nansum_x/numb_not_NaN_in_x

end


NANSTD
function nanstd(x::Array)

   z=similar(x)
   fill!(z,1)
   z[isnan(x)]=0
   numb_not_NaN_in_x=sum(z)

   nansum_x=sum(x) do x isnan(x) ? 0 : x end #from 
https://gist.github.com/milktrader/5213361
   nanmean_x=nansum_x/numb_not_NaN_in_x

   y=(x-nanmean_x).*(x-nanmean_x)

## NanMean for Sample
function nanmean_sample(y::Array)
   w=similar(y)
   fill!(w,1)
   w[isnan(y)]=0
   numb_not_NaN_in_y=sum(w)

   nansum_y=sum(y) do y isnan(y) ? 0 : y end #from 
https://gist.github.com/milktrader/5213361
   nansum_y/(numb_not_NaN_in_y-1)

 end
 nanstd_x=sqrt(nanmean_sample(y))

end




On Wednesday, February 5, 2014 9:11:45 PM UTC-7, Roger Herikstad wrote:
>
> Hi,
>  Are there equivalent functions to Matlab's nanmean and nanstd, i.e. 
> functions for computing mean and standard deviation while ignoring NaN's? 
> It's simple to put something together, of course, e.g.
>
> function nanmean(x)
>  mean(~isnan(x))
> end
>
> but it would nice to have as part of Base, or perhaps StatsBase? 
>
> ~ Roger
>

Reply via email to