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
18
19
27
2 11
39
3 10
4 8
4 5
# Below the
do.call(rbind,lapply(split(dat, dat$ind), function(x) x[c(1,nrow(x)),]))
---
Jacques VESLOT
CNRS UMR 8090
I.B.L (2ème étage)
1 rue du Professeur Calmette
B.P. 245
59019 Lille Cedex
Tel : 33 (0)3.20.87.10.44
Fax : 33 (0)3.20.87.10.31
could it be
dat[unlist(tapply(1:nrow(dat), ind, range)),]
?
stefano
-Messaggio originale-
Da: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] conto di
Mauricio Cardeal
Inviato: 26 July, 2006 14:22
A: r-help@stat.math.ethz.ch
Oggetto: [R] the first and last case
Dear Jacques,
I believe you need dat ordered by ind and y before you apply your solution,
right?
Sincerely,
Carlos J. Gil Bellosta
http://www.datanalytics.com
http://www.data-mining-blog.com
Quoting Jacques VESLOT [EMAIL PROTECTED]:
do.call(rbind,lapply(split(dat, dat$ind), function(x)
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,