Here's one way to do it with the plyr package:
library('plyr')
f <- function(df) with(df, data.frame(B = B, E = seq(C, D)))
ddply(d, 'A', f)
A corresponding solution with the data.table package would be
library('data.table')
dt <- data.table(d, key = 'A')
dt[, list(B, E = seq(C, D)), by = 'A']
011 7:03 AM
> To: r-help@r-project.org
> Subject: [R] Expand dataframe according to limits defined per row
>
> Hi all,
>
> Would appreciate help with transforming this:
>
> A B C D
> a 2 1 4
> b 3 3 5
>
> into this:
>
> A B E
> a 2 1
> a 2 2
> a 2 3
&
On 07.10.2011 16:02, darkgaze wrote:
Hi all,
Would appreciate help with transforming this:
A B C D
a 2 1 4
b 3 3 5
into this:
A B E
a 2 1
a 2 2
a 2 3
a 2 4
b 3 3
b 3 4
b 3 5
(C<=E<=D)
do.call(rbind, apply(dat, 1, function(x) data.frame(A=x[1], B=x[2],
E=seq(x[3], x[4]
Uwe Ligges
Hi all,
Would appreciate help with transforming this:
A B C D
a 2 1 4
b 3 3 5
into this:
A B E
a 2 1
a 2 2
a 2 3
a 2 4
b 3 3
b 3 4
b 3 5
(C<=E<=D)
Best,
Don
--
View this message in context:
http://r.789695.n4.nabble.com/Expand-dataframe-according-to-limits-defined-per-row-tp3882319p3882319.
4 matches
Mail list logo