Shubha, I apologize if this is a bit late - consequence of digest summary preference.
If I understand what you need, it is to calculate the value at month end given a data object. For zoo objects the following should do what you need. Actually is part of my new package on CRAN quantmod - basically a workflow management tool for quant finance modelling. Also visible at www.quantmod.com If you convert your data.frame to a zoo object (designed for ordered obs. - e.g. time-series) # for your data - which I don't know : ) zoo.ts <- zoo(youdataframe[,-1],as.Date(yourdataframe[,1])) # ^ ^ # ^ ^ ^ ^ # minus 'date' column the 'date' column - in CCYY-MM-DD format My example: A zoo time series object consisting of 231 days: > zoo.ts <- zoo(rnorm(231),as.Date(13514:13744)) > start(zoo.ts) [1] "2007-01-01" > end(zoo.ts) [1] "2007-08-19" # these are the end points of each period > breakpoints(zoo.ts,months,TRUE) [1] 0 31 59 90 120 151 181 212 231 # get the associated values > zoo.ts[breakpoints(zoo.ts,months,TRUE)] 2007-01-31 2007-02-28 2007-03-31 2007-04-30 2007-05-31 2007-06-30 -0.008829668 -2.207802921 0.171705151 -1.820125167 1.776643162 0.884558259 2007-07-31 2007-08-19 0.655305543 0.191870144 You can also apply a function inside each of these periods (intervals) with the function period.apply: e.g. the standard deviation of each period would be had with: > period.apply(zoo.ts,breakpoints(zoo.ts,months,TRUE),FUN=sd) [1] 0.9165168 1.2483743 1.0717529 1.2002236 0.9568443 0.8112068 0.8563814 [8] 0.8671502 The functions (and many others) are in quantmod - on CRAN and most up to date at www.quantmod.com For those who'd rather just have the functions: breakpoints <- function (x, by = c(weekdays, weeks, months, quarters, years), ...) { if (length(by) != 1) stop("choose ONE method for \"by\"") by <- match.fun(by) breaks <- which(diff(as.numeric(by(x, ...))) != 0) breaks <- c(0, breaks, NROW(x)) return(breaks) } period.apply <- function (x, INDEX, FUN, ...) { FUN <- match.fun(FUN) y <- NULL for (i in 1:(length(INDEX) - 1)) { sindex <- (INDEX[i] + 1):INDEX[i + 1] dat <- x[sindex] y <- c(y, FUN(dat, ...)) } return(y) } Jeff Ryan ______________________________________________ R-help@stat.math.ethz.ch 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.