[R] Month end calculations

Gabor Grothendieck ggrothendieck at gmail.com
Thu Aug 30 19:32:39 CEST 2007

```The zoo package includes the "yearmon" class to facilitate such
manipulations.  Here are a few solutions assuming you store
you series in a zoo variable:

# test data
library(zoo)
z <- zoo(1001:1100, as.Date(101:200))[-(45:55)]

# Solution 1.  tapply produces indexes of last of month
tt <- time(z)
z[ c(tapply(seq_along(tt), as.yearmon(tt), tail, 1)) ]

# If we want to create a last variable which corresponds
# to last in sas then do it this slightly longer way:

# Solution 2
tt <- time(z)
last <- seq_along(tt) %in% tapply(seq_along(tt), as.yearmon(tt), tail, 1)
z[last]

# Solution 3. another solution with a last variable.  f(x) is
# vector same length as x with all 0's except last element is 1.
tt <- time(z)
f <- function(x) replace(0*x, length(x), 1)
last <- ave(seq_along(tt), as.yearmon(tt), FUN = f)
z[last]

In all these solutions the last point in the series is always
included.

We have not assumed that every day is necessarily included in your
series but if every day is included then even simpler solutions
are possible.

On 8/29/07, Shubha Vishwanath Karanth <shubhak at ambaresearch.com> wrote:
> Hi R users,
>
>
>
> Is there a function in R, which does some calculation only for the month
> end in a daily data?... In other words, is there a command in R,
> equivalent to "last." function in SAS?
>
>
>
> BR, Shubha
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help