Learn R Programming

splitstackshape (version 1.4.8)

Stacked: Stack Columns from a Wide Form to a Long Form

Description

A function to conveniently stack groups of wide columns into a long form which can then be merged together.

Usage

Stacked(data, id.vars = NULL, var.stubs, sep, keep.all = TRUE,
  keyed = TRUE, keep.rownames = FALSE, ...)

Arguments

data

The source data.frame.

id.vars

The variables that serve as unique identifiers. Defaults to NULL, at which point, all names which are not identified as variable groups are used as the identifiers.

var.stubs

The prefixes of the variable groups.

sep

The character that separates the "variable name" from the "times" in the wide data.frame. Alternatively, can be set to "var.stubs" (in quotes) if you do not have a value for sep.

keep.all

Logical. Should all the variables from the source data.frame be kept (keep.all = TRUE) or should the resulting data.table comprise only columns for the id.vars, var.stubs, and "times" (keep.all = FALSE). Other variables are recycled to appropriate length. For this to work, both id.vars and var.stubs must be specified.

keyed

Logical. Should the Stacked function automatically set the key for the resulting data.tables. If TRUE (default) the key is set to the id.vars and the "time" variables that are created by Stacked.

keep.rownames

Logical. Should rownames be kept when converting the input to a data.table? Defaults to FALSE.

Other arguments to be passed on when sep = "var.stubs" (specifically, atStart: A logical argument to indicate whether the stubs come at the start or at the end of the variable names).

Value

A list of data.tables with one data.table for each "var.stub". The key is set to the id.vars and .time_# vars.

See Also

stack, melt from "reshape2".

Examples

Run this code
# NOT RUN {
set.seed(1)
mydf <- data.frame(id_1 = 1:6, id_2 = c("A", "B"),
                   varA.1 = sample(letters, 6),
                   varA.2 = sample(letters, 6),
                   varA.3 = sample(letters, 6),
                   varB.2 = sample(10, 6),
                   varB.3 = sample(10, 6),
                   varC.3 = rnorm(6))
mydf
Stacked(data = mydf, var.stubs = c("varA", "varB", "varC"), sep = ".")

# }
# NOT RUN {
# }

Run the code above in your browser using DataLab