I'll have to give this a try this weekend. Thank you! ben
On Fri, Mar 2, 2012 at 12:07 PM, jim holtman <jholt...@gmail.com> wrote: > One way to speed up the merge is not to use merge. You can use 'match' to > find matching indices and then manually. > > Does this do what you want: > > > ua <- read.table(text = ' AName rt_date > + 2007-03-31 "14066.580078125" "2007-04-01" > + 2007-06-30 "14717" "2007-04-03" > + 2007-09-30 "15528" "2007-10-25" > + 2007-12-31 "17609" "2008-04-06" > + 2008-03-31 "17168" "2008-04-24" > + 2008-06-30 "17681" "2008-04-09"', header = TRUE, as.is = TRUE) > > > > dt <- c( "2007-03-31" ,"2007-04-01" ,"2007-04-02", "2007-04-03" > ,"2007-04-04", > + "2007-04-05" ,"2007-04-06" ,"2007-04-07", > + "2007-04-08", "2007-04-09") > > > > # find matching values in ua > > indx <- match(dt, ua$rt_date) > > > > # create new result matrix > > xx1 <- cbind(dt, ua[indx,]) > > rownames(xx1) <- NULL # delete funny names > > xx1 > dt AName rt_date > 1 2007-03-31 NA <NA> > 2 2007-04-01 14066.58 2007-04-01 > 3 2007-04-02 NA <NA> > 4 2007-04-03 14717.00 2007-04-03 > 5 2007-04-04 NA <NA> > 6 2007-04-05 NA <NA> > 7 2007-04-06 NA <NA> > 8 2007-04-07 NA <NA> > 9 2007-04-08 NA <NA> > 10 2007-04-09 NA <NA> > > > > > On Fri, Mar 2, 2012 at 5:24 AM, Ben quant <ccqu...@gmail.com> wrote: > >> Hello, >> >> I have a nasty loop that I have to do 11877 times. The only thing that >> slows it down really is this merge: >> >> xx1 = merge(dt,ua_rd,by.x=1,by.y= 'rt_date',all.x=T) >> >> Any ideas on how to speed it up? The output can't change materially (it >> works), but I'd like it to go faster. I'm looking at getting around the >> loop (not shown), but I'm trying to speed up the merge first. I'll post >> regarding the loop if nothing comes of this post. >> >> Here is some information on what type of stuff is going into the merge: >> >> > class(ua_rd) >> [1] "matrix" >> > dim(ua_rd) >> [1] 20 2 >> > head(ua_rd) >> AName rt_date >> 2007-03-31 "14066.580078125" "2007-04-26" >> 2007-06-30 "14717" "2007-07-19" >> 2007-09-30 "15528" "2007-10-25" >> 2007-12-31 "17609" "2008-01-24" >> 2008-03-31 "17168" "2008-04-24" >> 2008-06-30 "17681" "2008-07-17" >> > class(dt) >> [1] "character" >> > length(dt) >> [1] 1799 >> > dt[1:10] >> [1] "2007-03-31" "2007-04-01" "2007-04-02" "2007-04-03" "2007-04-04" >> "2007-04-05" "2007-04-06" "2007-04-07" >> [9] "2007-04-08" "2007-04-09" >> >> thanks, >> >> Ben >> >> [[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. >> > > > > -- > 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]] ______________________________________________ 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.