Hello,

I am trying to come up with a routine to calculate a rolling mean and
standard deviation for three parameters stored in a NetCDF file.  The NetCDF
file contains 10 years of daily records for each of the three parameters,
and I need the statistics for each of the three parameters.

Below I include some code illustrating what I've done so far. Obviously this
approach does not get at the problem. It loops thru the data, to get to the
daily data, but stops short of trying to get the running mean/standard
deviation, an assignment that came after I developed the approach shown
here.

Where should the rolling mean and standard deviation functions be integrated
in the script, and what recommendations - approach can you offer to
accomplish this task.

I am running this on a Windows 7 machine with R 2.12.2
Thanks for taking the time to help.

Steve

--------------------------------------------------------------------------------------------------------------------
setwd("C:\\Woodstorks")
getwd()


library(tis)     #  includes function for leap year
library(ncdf)

 woodstorks <- open.ncdf("WoodStork_Eden_2000_2009.nc")

 print(woodstorks)

  print(v2)

# next two lines create index values for temporal sequences.
 DaysToMonth365 <- c(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,
365)
 DaysToMonth366 <- c(0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335,
366)

Lyear <- isLeapYear(2000:2009) #  returns boolean TRUE FALSE vector for
years in sequence


#  next function is used latter in script see line 50
  processMonth<-function(x){
        print(x)
      }

 start_year<- 1999

# initiates 1 year before to capture December of correct year, next line
uses the for loop to run thru
# the number of years. Here 3 is used to limit the number used in a testing
mode.

   for(t in 1:3) {
   currentYear = start_year + t
   leapYear <- isLeapYear(currentYear:currentYear) #  returns boolean vector
TRUE FALSE for years in sequence
   #print(leapYear)
    Days<-DaysToMonth365
          if(leapYear){
             Days<-DaysToMonth366
           }
      print(Days)
      data <- array(data, dim = c(Days[1], 405, 265))
         for(d in 1: 226) {
               for(y in 1: 405) {
                 for(x in 1:287) {
                      Day = 1
                      counter <- 2  # first element in array
                    #print(paste("Day = ", d))
                   if(d >= Days[counter]) {
                       counter <- counter + 1
                       #print(paste("here = ", t))
                       processMonth(data)
                       data <- array(data, dim = c(Days[1], 405, 265))
                        Day = 1
                        print(Day)
                     }
                       else
                   {
                   index<-c(x,y,d,t)
                   count<-c(1,1,1,1)
                   temp<-  get.var.ncdf(woodstorks, v2, start=index, count =
count)
                   i <- (d*405*287) + (y*287) + x #map 3d to 1dimension
                   data[i] = temp[1]
                   #print(data[i])
                   Day <- Day + 1
                   print(Day)
                  }
               }
           }
         }
      }

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to