merge dataframes
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-bounces at r-project.org [mailto:r-help-bounces at 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 <rnieuws at 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 at 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.
Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. [[alternative HTML version deleted]]