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 >
