Merge {lessR} | R Documentation |
Merge Two Data Frames Horizontally or Vertically
Description
Abbreviation: mrg
A horizontal merge combines data frames horizontally, that is, adds variables (columns) to an existing data frame, such as with a common shared ID field. Performs the horizontal merge based directly on the standard R merge
function. The vertical merge is based on the rbind
function in which the two data frames have the same variables but different cases (rows), so the rows build vertically, stacked on top of each other.
The advantages of this lessR
function is that it provides a single function for merging data frames, adds text output to the standard R functions that provide feedback regarding properties of the merge, and provides more detailed and presumably more useful error messages.
Usage
Merge(data1, data2, by=NULL, quiet=getOption("quiet"), ...)
mrg(...)
Arguments
data1 |
The name of the first data frame from which to create the merged data frame. |
data2 |
The name of the second data frame from which to create the merged data frame. |
by |
If a variable specified, then signals a horizontal merge with the
ID field by which the data frames are merged as an inner join, that is,
only rows of data are retained that both match on the ID. Specify
|
quiet |
If set to |
... |
Additional arguments available in the base R |
Details
Merge
creates a merged data frame from two input data frames.
If by
is specified the merge is horizontal. That is the variables in the second input data frame are presumed different from the variables in the first input data frame. The merged data frame is the combination of variables from both input data frames, with the rows aligned by the value of by
, an ID field common to both data frames. The result is a natural join, a specific instance of an inner join in which merging occurs according a common variable.
Invoke merge
parameters all.x
, all.y
, and all
, set to TRUE
for the corresponding condition. These parameters set, respectively, a left-outer join, right-outer join, and a outer join in which all records from both data frames are retained regardless if a matching row in the other data frame.
Set by
to "rows"
for a vertical merge. The variables are presumed the same in each input data frame. The merged data frame consists of the rows of both input data frames. The rows of the first data frame are stacked upon the rows of the second data frame.
Guidance and feedback regarding the merge are provided by default. The first five lines of each of the input data frames are listed before the merge operation, followed by the first five lines of the output data frame.
Value
The merged data frame is returned, usually assigned the name of d
as in the examples below. This is the default name for the data frame input into the lessR
data analysis functions.
Author(s)
David W. Gerbing (Portland State University; gerbing@pdx.edu)
See Also
Examples
# Horizontal
#-----------
d <- Read("Employee", quiet=TRUE)
Emp1a <- d[1:4, .(Years, Gender, Dept, Salary)]
Emp1b <- d[1:4, .(JobSat, Plan)]
# horizontal merge
d <- Merge(Emp1a, Emp1b, by="row.names")
# suppress output to console
d <- Merge(Emp1a, Emp1b, by="row.names", quiet=TRUE)
# Vertical
#---------
d <- Read("Employee", quiet=TRUE)
Emp2a <- d[1:4,]
Emp2b <- d[7:10,]
# vertical merge
d <- Merge(Emp2a, Emp2b, by="rows")