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 Thanks for any help. Cec?lia Carmo (Universidade de Aveiro)
Hi Cec?lia, Assuming that you want to pair two samples as more as possible, let's relabel the k1 indices. The x$k1 c(1,1,2,3,3,5) could be relabeled as c(1.01,1.02,2.01,3.01,3.02,5.01), so as y$k1. x$k1 <- x$k1+sequence(rle(x$k1)$lengths)/100 y$k1 <- y$k1+sequence(rle(y$k1)$lengths)/100 merge(x,y,by="k1") Regards, Wu ----- A R learner. -- View this message in context: http://r.789695.n4.nabble.com/paired-samples-matching-rows-merge-tp2332352p2332402.html Sent from the R help mailing list archive at Nabble.com.
On Aug 20, 2010, at 6:44 AM, Cecilia Carmo 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.When there is more than one possible match in either y or x to a possible match on k1 in the othr set of values, is there some rule that lets you determine which one should be chosen. Your offered solution suggests that you think the order in the original data.frams is a proper rule, but why should we believe that rule is anything other than convenience? -- David.> > 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 > > Thanks for any help. > > Cec?lia Carmo > (Universidade de Aveiro)David Winsemius, MD West Hartford, CT
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"))
hello cecilia, i tried: yn<-y[y$k1%in%x$k1,] xn<-x[x$k1%in%y$k1,] x1st<-unique(match(yn$k1,xn$k1)) y1st<-unique(match(xn$k1,yn$k1)) new<-cbind(k1=intersect(y$k1,x$k1),k2.x=xn[x1st,2],k2.y=yn[y1st,2]) giving: k1 k2.x k2.y [1,] 1 20 10 [2,] 2 22 12 [3,] 3 23 14 [4,] 5 25 16 ...but wih the irregulary duplicated values in k1 i dead-ended and i guess it could get tricky to solve this. greetings, kay ----- ------------------------ Kay Cichini Postgraduate student Institute of Botany Univ. of Innsbruck ------------------------ -- View this message in context: http://r.789695.n4.nabble.com/paired-samples-matching-rows-merge-tp2332352p2332427.html Sent from the R help mailing list archive at Nabble.com.
..gabor gave the solution during i was typing - so please disregard this. yours, kay ----- ------------------------ Kay Cichini Postgraduate student Institute of Botany Univ. of Innsbruck ------------------------ -- View this message in context: http://r.789695.n4.nabble.com/paired-samples-matching-rows-merge-tp2332352p2332431.html Sent from the R help mailing list archive at Nabble.com.