I am attempting to join several dataframes that summarize sampling effort
for different samples into one large data.frame/table.
I have looked at the merge command, but have not been clever enough to
figure out how to get it to do what I want.
A simplified example of what I am trying to do:
The dataframes I have look like this (they were generated using the table
command)
species1.effort
site1 site2 site3
date1 5 5 5
date2 4 5 5
date3 4 5 5
species2.effort
site1 site2 site3
date1 7 8 6
date3 8 7 8
date4 8 8 8
I would like to join these into a table that looks something like this:
Effort
sp1.site1 sp1.site2 sp1.site3 sp2.site1 sp2.site2
sp2.site2
date1 5 5 5 7
8 6
date2 4 5 5 NA
NA NA
date3 4 5 5 8
7 8
date4 NA NA NA 8 8
8
I have many more dates and species, but I assume whatever method works for
this small example, would work for larger cases.
Thanks,
Matt Goff
It appears that you want to match rows by date. It also looks like
your date information is in the row names, only, if the layout of
your example can be trusted.
The help for merge says this:
"By default the data frames are merged on the columns with names
they both have..."
but the column you want to merge by, date, is not in either
dataframe. So, obviously, it can't merge on date. Also, since your
example has other columns with the same name that you do not want to
merge on, you will have to tell it explicitly what columns to use for
the merge.
So, assuming I've interpreted your example correctly, try this:
(1) get your dates into a column
(2) use the 'by' argument of merge to force it to merge on date only.
merge(species1.effort, species2.effort, by='date')
-Don
At 11:37 AM -0800 10/4/05, Matt Goff wrote:>I am attempting to join several dataframes that summarize sampling effort
>for different samples into one large data.frame/table.
>I have looked at the merge command, but have not been clever enough to
>figure out how to get it to do what I want.
>
>A simplified example of what I am trying to do:
>
>The dataframes I have look like this (they were generated using the table
>command)
>
>species1.effort
> site1 site2 site3
>date1 5 5 5
>date2 4 5 5
>date3 4 5 5
>
>species2.effort
> site1 site2 site3
>date1 7 8 6
>date3 8 7 8
>date4 8 8 8
>
>I would like to join these into a table that looks something like this:
>
>Effort
> sp1.site1 sp1.site2 sp1.site3 sp2.site1 sp2.site2
>sp2.site2
>date1 5 5 5 7
>8 6
>date2 4 5 5 NA
>NA NA
>date3 4 5 5 8
>7 8
>date4 NA NA NA 8 8
>8
>
>
>I have many more dates and species, but I assume whatever method works for
>this small example, would work for larger cases.
>
>Thanks,
>Matt Goff
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
Matt, you may want to set the option all to TRUE in : merge(species1.effort, species2.effort, by='date', all=TRUE) in order to also have in the result matrix the lines with 'date' that is not commun for the both. see ?merge for details. hope this helps, Florence. --- Transcriptome platform of the ENS, Paris, France http://transcriptome.ens.fr [[alternative HTML version deleted]]