On Tue, Jul 6, 2010 at 8:26 PM, Gabor Grothendieck <ggrothendi...@gmail.com> wrote: > On Tue, Jul 6, 2010 at 6:18 PM, raghu <r.raghura...@gmail.com> wrote: >> >> I have two files with dates and prices in each. The number of rows in each of >> them will differ. How do I create a new file which contains data from both >> these files? Cbind and merge are not helpful. For cbind because the rows are >> not the same replication occurs. Also if I have similar data how do I write >> a vlookup kind of function? I am giving an example below: >> Say Price1 file contains the following: >> Date Price >> 2/3/2010 134.00 >> 3/3/2010 133.90 >> 4/3/2010 135.55 >> >> And say price2 contains the following: >> Date Price >> 2/3/2010 2300 >> 3/3/2010 3200 >> 4/3/2010 1800 >> 5/3/2010 1900 >> >> I want to take both these data together in a single file, and take the >> smaller vector (or matrix or dataframe??..i am new to R and still confused >> with the various objects) which is file1 (because it contains fewer rows ) >> and vlookup prices in the second file basedon the dates on file1 and write >> three columns (date, price from 1 and price from2) in a new file. How do i >> do this please? >> > > Try this and for more read the three vignettes (pdf documents) in the > zoo package and also read the R News 4/1 article on dates and times: > > Lines1 <- "Date Price > 2/3/2010 134.00 > 3/3/2010 133.90 > 4/3/2010 135.55" > > Lines2 <- "Date Price > 2/3/2010 2300 > 3/3/2010 3200 > 4/3/2010 1800 > 5/3/2010 1900" > > library(zoo) > library(chron) > z1 <- read.zoo(textConnection(Lines1), header = TRUE, FUN = chron) > z2 <- read.zoo(textConnection(Lines2), header = TRUE, FUN = chron)
I originally assumed that the dates were the usual month/day/year but looking at it again I suspect they are day/month/year so lets use Date class instead of chron replacing the last three statements with: fmt <- "%d/%m/%Y" z1 <- read.zoo(textConnection(Lines1), header = TRUE, format = fmt) z2 <- read.zoo(textConnection(Lines2), header = TRUE, format = fmt) > merge(z1, z2) # keep all rows in each > merge(z1, z2, all = FALSE) # keep only rows in both > merge(z1, z2, all = c(TRUE, FALSE)) # keep all rows in z1 > merge(z1, z2, all = c(FALSE, TRUE)) # keep all rows in z2 > ______________________________________________ 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.