[R] paired samples, matching rows, merge()
Gabor Grothendieck
ggrothendieck at gmail.com
Fri Aug 20 14:30:16 CEST 2010
On Fri, Aug 20, 2010 at 6:44 AM, Cecilia Carmo <cecilia.carmo at ua.pt> wrote:
> Hi everyone!
>
> I'm matching two samples to create one sample that have
> pairs of observations equal for the k1 variable. Merge() doesn't work
> because I dont't want to recycle the values.
>
> x <- data.frame(k1=c(1,1,2,3,3,5), k2=c(20,21,22,23,24,25))
> x
> y <- data.frame(k1=c(1,1,2,2,3,4,5,5), k2=c(10,11,12,13,14,15,16,17))
> y
> merge(x,y,by="k1")
> k1 k2.x k2.y
> 1 1 20 10
> 2 1 20 11
> 3 1 21 10
> 4 1 21 11
> 5 2 22 12
> 6 2 22 13
> 7 3 23 14
> 8 3 24 14
> 9 5 25 16
> 10 5 25 17
>
> I have a final dataframe with 10 rows, but I want it with 5 rows, like this:
> k1 k2.x k2.y
> 1 1 20 10
> 2 1 21 11
> 3 2 22 12
> 4 3 23 14
> 5 5 25 16
>
Try this:
x$k3 <- with(x, ave(k1, k1, FUN = seq_along))
y$k3 <- with(y, ave(k1, k1, FUN = seq_along))
merge(x, y, by = c("k1", "k3"))
More information about the R-help
mailing list