[R] the first and last case

Gabor Grothendieck ggrothendieck at gmail.com
Wed Jul 26 15:36:48 CEST 2006


Try these:

# 1
library(Hmisc)
summary(y ~ ind, dat, fun = range, overall = FALSE)

# 2
# or with specified column names
f <- function(x) c(head = head(x,1), tail = tail(x,1))
summary(y ~ ind, dat, fun = f, overall = FALSE)

# 3
# another approach using by - same f as above
do.call(rbind, by(dat$y, dat$ind, f))

# 4
# same but with with an ind column
g <- function(x) c(ind = x$ind[1], head = head(x$y,1), tail = tail(x$y,1))
do.call(rbind, by(dat, dat$ind, g))


On 7/26/06, Mauricio Cardeal <mcardeal at ufba.br> wrote:
> Hi all
>
> Sometime ago I asked for a solution about how to aggregate data and the
> help was wonderful. Now, I´d like to know how to extract for each
> individual case below the first and the last observation to obtain this:
>
> ind  y
> 1    8
> 1    9
> 2    7
> 2   11
> 3    9
> 3   10
> 4   8
> 4   5
>
> # Below the example:
>
> ind <- c(1,1,1,2,2,3,3,3,4,4,4,4)
> y <- c(8,10,9,7,11,9,9,10,8,7,6,5)
> dat <- as.data.frame(cbind(ind,y))
> dat
> attach(dat)
> mean.ind <- aggregate(dat$y, by=list(dat$ind), mean)
> mean.ind
>
> Thanks
> Mauricio
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list