Yes, try this: x1$id <- unlist(with(x1, tapply(x, x, seq))) x2$id <- unlist(with(x2, tapply(x, x, seq))) subset(merge(x1, x2, by = c("x", "id"), all = T), select = -id)
On Wed, Jun 17, 2009 at 10:24 PM, Martin Batholdy <batho...@googlemail.com>wrote: > Is because the category is not unique, then merge are replicate the values. > > > Yeah, ok. > But that is exactly my problem with the actual data set, I don't want "new" > rows; > > If I have; > > x1 > 1 4 > 1 3 > 1 6 > 2 9 > 2 2 > > > x2 > 1 -3 > 1 -7 > 2 -3 > 2 -2 > > > > I want this data.frame; > > x1.x2 > 1 4 -3 > 1 3 -7 > 1 6 NA > 2 9 -3 > 2 2 -2 > > or > > x1.x2 > 1 4 -3 > 1 3 -7 > 2 9 -3 > 2 2 -2 > > > > > It does not matter to me if the rows are merged like; > > 1 4 -3 > 1 3 -7 > > or > > 1 4 -7 > 1 3 -3 > > > > > can I also do something like that with merge() ? > > > > Am 18.06.2009 um 03:18 schrieb Henrique Dallazuanna: > > Is because the category is not unique, then merge are replicate the values. > > Try this example: > > x <- data.frame(category=1:10, rnorm(10)) > y <- data.frame(category=3:12, rnorm(10)) > > merge(x, y, by = "category") > merge(x, y, by="category", all = T) > > > On Wed, Jun 17, 2009 at 10:04 PM, Martin Batholdy <batho...@googlemail.com > > wrote: > >> I have tried to replicate the example on the help page; >> >> >> x <- data.frame(category = sample(3, 10, r=TRUE), rnorm(10, 5, 2)) >> y <- data.frame(category = sample(3, 10, r=TRUE), rnorm(10, 8, 2)) >> >> merge(x, y, by = "category") >> >> >> >> When I do that, I get a data.frame with 28 rows instead of 10. >> >> What am I doing wrong? >> >> >> >> Am 18.06.2009 um 02:42 schrieb David Winsemius: >> >> >> Red the help page for merge: >>> >>> ?merge >>> >>> >>> On Jun 17, 2009, at 8:33 PM, Martin Batholdy wrote: >>> >>> hi, >>>> >>>> >>>> I have two data.frames each with two columns; >>>> >>>> >>>> x1 >>>> >>>> 1 4 >>>> 1 3 >>>> 1 6 >>>> 2 9 >>>> 2 2 >>>> 2 5 >>>> 3 6 >>>> 3 7 >>>> 3 4 >>>> >>>> >>>> x2 >>>> >>>> 1 -3 >>>> 1 -7 >>>> 2 -3 >>>> 2 -2 >>>> 2 -8 >>>> 3 -1 >>>> 3 -2 >>>> 3 -1 >>>> >>>> now I want to merge this data.frames to one data.frame. >>>> >>>> The problem is, that sometimes there is a different number of elements >>>> per category. >>>> (like above x1 has 3 values for the value 1 in the first row, but x2 has >>>> only 2 values for the value 1 in the first row). >>>> >>>> Is there an easy way to merge this two data.frames by deleting the rows >>>> that only one data.frame "has". >>>> In the example, that resulting data.frame would be the data.frame x1 and >>>> x2 except the row 3 of data.frame x1. >>>> >>>> thanks for any suggestions! >>>> >>>> ______________________________________________ >>>> 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. >>>> >>> >>> David Winsemius, MD >>> Heritage Laboratories >>> West Hartford, CT >>> >>> >> ______________________________________________ >> 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. >> > > > > -- > Henrique Dallazuanna > Curitiba-Paraná-Brasil > 25° 25' 40" S 49° 16' 22" O > > > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
______________________________________________ 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.