[R] Repeating lines in a data frame

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Tue Oct 18 22:56:41 CEST 2005



Guenther, Cameron wrote:
> Hello,
> I have a much larger dataset that is similar in form to:
>  year species length count
>  1998       1    150     1
>  1998       2    200     1
>  1998       3    250     2
>  1999       1    150     3
>  1999       2    200     4
>  1999       3    250     5
>  2000       1    150     1
>  2000       2    200     1
>  2000       3    250     1
>  2001       1    150     2
>  2001       2    200     3
>  2001       3    250     1
>  2002       1    150     1
>  2002       2    200     2
>  2002       3    250     3
> 
> What I want is to have a line of data for each year x species x length
> group combination
> I would like the ouput to be:
> 
> Year species length count
> 1998       1    150     1
> 1998       2    200     1
> 1998       3    250     1
> 1998       3    250     1
> 1999       1    150     1
> 1999       1    150     1
> 1999       1    150     1
> 1999       2    200     1
> .
> .
> .
> 
> Can anyone help me with a for statement of a function that can
> accomplish this?


How about:

r <- rep(row.names(x), x$count)
y <- x[r, ]
y$count <- rep(1, nrow(y))

where `x' is your data.frame. This will also create new row.names what 
show where the duplicates are.

HTH,

--sundar




More information about the R-help mailing list