This is what I need, but my dataframe has many rows and it returns to me the following message:

Error: cannot allocate vector of size 120 Kb
In addition: There were 18 warnings (use warnings() to see them)

Could you help me,

Thanks
Cecília

Em Fri, 20 Aug 2010 08:30:16 -0400
 Gabor Grothendieck <ggrothendi...@gmail.com> escreveu:
On Fri, Aug 20, 2010 at 6:44 AM, Cecilia Carmo <cecilia.ca...@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"))

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to