Rev 8162 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{merge}\alias{merge}\alias{merge.default}\alias{merge.data.frame}\title{Merge Two Data Frames}\description{Merge two data frames by common columns or row names.}\usage{merge(x, y, by, by.x, by.y, sort = TRUE)}\arguments{\item{x, y}{data frames, or objects to be coerced to one}\item{by, by.x, by.y}{specifcations of the common columns. See Details.}\item{sort}{logical. Should the results be sorted on the \code{by} columns?}}\details{By default the data frames are merged on the columns with names theyboth have, but separate specifcations of the columns can be given by\code{by.x} and \code{by.y}. Columns can be specified by name, numberor by a logical vector: the name \code{"row.names"} or the number\code{0} specifies the row names. The rows in the two data framesthat match on the specified columns are extracted, and joinedtogether. If there is more than one match, all possible matchescontribute one row each.If the remaining columns in the data frames have any common names,these have \code{".x"} and \code{".y"} appended to make the namesof the result unique.}\value{A data frame. The rows are by default lexicographically sorted on thecommon columns, but are otherwise in the order in which they occurredin \code{x}. The columns are the common columns followed by theremaining columns in \code{x} and then those in \code{y}. If thematching involved row names, an extra column \code{Row.names} is addedat the left, and in all cases the result has no special row names.}\seealso{\code{\link{data.frame}}, \code{\link{by}}, \code{\link{cbind}}}\examples{authors <- data.frame(surname = c("Tukey", "Venables", "Tierney", "Ripley", "McNeil"),nationality = c("US", "Australia", "US", "UK", "Australia"),retired = c("yes", rep("no", 4)))books <- data.frame(name = c("Tukey", "Venables", "Tierney", "Ripley", "Ripley", "McNeil"),title = c("Exploratory Data Analysis","Modern Applied Statistics ...","LISP-STAT","Spatial Statistics", "Stochastic Simulation","Interactive Data Analysis"),other.author = c(NA, "Ripley", NA, NA, NA, NA))merge(authors, books, by.x="surname", by.y="name")merge(books, authors, by.x="name", by.y="surname")}\keyword{iteration}