[R] Creating multiple copies of rows in data frames
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Fri Feb 10 21:45:17 CET 2006
Eric Archer wrote:
> ListeRs,
>
> Within the last two months, I thought I saw mention of an R function
> that would create a new data frame composed of duplicates or multiple
> copies of rows of an input data frame given one or several columns of
> values indicating how many times each row should be copied. As a simple
> example, given a dataframe:
>
> > in.df
> x y
> 1 A 1
> 2 B 2
> 3 C 3
>
> "func.name (in.df, in.df$y)" would produce something like:
>
> x y
> 1 A 1
> 2 B 2
> 3 B 2
> 4 C 3
> 5 C 3
> 6 C 3
>
> For the life of me, I can't remember what that function was called, nor
> can I find it using help.search or RSiteSearch on terms like "duplicate"
> or "copy". Perhaps it had another primary purpose, but this was a
> side-effect or secondary capability. Was I hallucinating, or does this
> exist as a function in base R? Or, will I have to make one with "rep"?
> Thanks in advance!
>
> e.
>
As you mentioned, ?rep should be sufficient:
in.df <- data.frame(x = LETTERS[1:3], y = 1:3)
out.df <- in.df[rep(seq(nrow(in.df)), in.df$y), ]
Then if you want to re-name the row.names
row.names(out.df) <- seq(nrow(out.df))
--sundar
More information about the R-help
mailing list