Hello,

Or use ?all.equal.

all.equal(dat2[52, 1], dat1[5, 1])  # TRUE


Hope this helps,

Rui Barradas

Em 03-07-2013 15:18, David Carlson escreveu:
In addition to reading Frequently Asked Questions Section 7.31, you
should always run your own code before posting. Yours does not work.
Spend some time reading one or more of the R tutorials and learn
about vectorization. It will save you time and typing. There are
many to choose from at

http://cran.r-project.org/other-docs.html

Do not try to match decimal values. Instead create an index value
that is a character string. Then you can match the character
strings:

dat1<-data.frame(x=c(1.0,1.2,3.2,4.0,5.1),y=c(23,17,12,27,8))
dat2 <- data.frame(x=seq(0.1,6,by=0.1),y=rep(0,60)) # Errors in
your code corrected here
dat1$xc <- sprintf("%1.1f", dat1$x, 1) # Create dat1 index value
as character
dat2$xc <- sprintf("%1.1f", dat2$x, 1) # Create dat2 index value
as character
dat2[match(dat1$xc, dat2$xc),] <- dat1 # update dat2 with dat1
dat2[dat2$y>0,] # Check the results
      x  y  xc
10 1.0 23 1.0
12 1.2 17 1.2
32 3.2 12 3.2
40 4.0 27 4.0
51 5.1  8 5.1
dat1
     x  y  xc
1 1.0 23 1.0
2 1.2 17 1.2
3 3.2 12 3.2
4 4.0 27 4.0
5 5.1  8 5.1

-------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77840-4352


-----Original Message-----
From: r-help-boun...@r-project.org
[mailto:r-help-boun...@r-project.org] On Behalf Of jim holtman
Sent: Wednesday, July 3, 2013 7:22 AM
To: André de Boer
Cc: R mailing list
Subject: Re: [R] merge dataframes

FAQ 7.31


On Wed, Jul 3, 2013 at 7:55 AM, Andri de Boer <rnie...@gmail.com>
wrote:

Hello,

I have two dataframes:
dat1<-data.frame(x=c(1.0,1.2,3.2,4.0,5.1),y=c(23,17,12,27,8))
dat2<-data.frame(x=seq(0,6,by=0.1),y=rep(0,60)))

I want to replace the corresponding rows of dat2 with the ones of
dat1.
I tried:

for(i in 1:nrow(dat1))
{
   dat2[dat2$x==dat1[i,1],2]<-dat1[i,2]
}

But I discovered that not every 5.1 is equal:

dat2[52,1][1] 5.1> dat1[5,1][1] 5.1> dat2[52,1]==dat1[5,1][1]
FALSE



How to solve this?



Regards,

Andri

         [[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.





______________________________________________
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