Skip to content
Prev 311987 / 398506 Next

merging two specific rows in a DF

Hello,

Try the following.


x <- read.table(text="
C1 C2 TYPE
10 20 A
33 44 B
66 80 A
111 140 B
144 220 B
300 340 A
380 449 A
455 500 B
510 520 A
540 580 B
", header = TRUE)
x


fun <- function(x){
     mn <- which.min(x$C1)
     mx <- which.max(x$C2)
     c(C1 = x$C1[mn], C2 = x$C2[mx], TYPE = x$TYPE[1])
}

idx <- seq_len(nrow(x))[-1]
idx2 <- cumsum(c(FALSE, x$TYPE[idx - 1] != x$TYPE[idx]))
y <- do.call(rbind, lapply(split(x, idx2), fun))
rownames(y) <- seq_len(nrow(y))
y


Hope this helps,

Rui Barradas
Em 26-11-2012 10:24, karthicklakshman escreveu: