[R] How Can I Concatenate Every Row in a Data Frame with Every Other Row?
Duncan Murdoch
murdoch at stats.uwo.ca
Sat Mar 21 17:23:45 CET 2009
On 21/03/2009 12:01 PM, Donald Macnaughton wrote:
> I have a data frame with roughly 500 rows and 120 variables. I would like
> to generate a new data frame that will include one row for each PAIR of
> rows in the original data frame and will include all 120 + 120 = 240
> variables from the two rows. I need only one row for each pair, not two
> rows. Thus the new data frame will contain 500 x 499 / 2 = 124,750 rows.
>
> Is there an easy way to do this with R?
Probably the easiest is to generate row indices for each pair, e.g.
n <- nrow(mydata)
row1 <- rep(1:n, n)
row2 <- rep(1:n, each=n)
keep <- row1 < row2
big <- cbind(mydata[row1[keep],], mydata[row2[keep],])
With a simple example
> mydata <- data.frame(a=1:3, b=letters[1:3])
> mydata
a b
1 1 a
2 2 b
3 3 c
this produces
> big
a b a b
1 1 a 2 b
1.1 1 a 3 c
2 2 b 3 c
More information about the R-help
mailing list