[R] merging two specific rows in a DF

Rui Barradas ruipbarradas at sapo.pt
Mon Nov 26 18:37:49 CET 2012


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:
> Hello members,
>
> I have this data frame with 3 columns,
> 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
>
> Here,  the rows 4 , 5 has type "B" and similarly 6,7 has "A" . I need to
> merge these rows in a way to get the output with unique type, something like
> below, where the lowest value from DF$C1 and  highest value from DF$C2
> corresponding to rows 4,5 are picked.
>
> C1	C2	TYPE
> 10	20	A
> 33	44	B
> 66	80	A
> 111	220	B
> 300	449	A
> 455	500	B
> 510	520	A
> 540	580	B
>
> I Request your kind help..
> Regards,
> karthick
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/merging-two-specific-rows-in-a-DF-tp4650826.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org 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