Description Usage Arguments Details Value Author(s) See Also Examples
The stats::reshape()
function in base R is very handy when you want a
semilong (or semiwide) data.frame
. However, base R's reshape
has
problems is with "unbalanced" panel data, for instance data where one
variable was measured at three points in time, and another only twice.
1 
data 
The source 
id.vars 
The variables that serve as unique identifiers. Defaults to

var.stubs 
The prefixes of the variable groups. 
sep 
The character that separates the "variable name" from the "times"
in the wide 
rm.rownames 
Ignored as 
... 
Further arguments to 
This function was written to overcome that limitation of dealing with unbalanced data, but is also appropriate for basic widetolong reshaping tasks.
Related functions like utils::stack()
in base R and reshape2::melt()
in
"reshape2" are also very handy when you want a "long" reshaping of data, but
they result in a very long structuring of your data, not the "semiwide"
format that reshape
produces. data.table::melt()
can produce output like
reshape
, but it also expects an equal number of measurements for each
variable.
A "long" data.table
of the reshaped data that retains the
attributes added by base R's reshape
function.
Ananda Mahto
Stacked()
, utils::stack()
, stats::reshape()
,
reshape2::melt()
, data.table::melt()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  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
## Note that these data are unbalanced
## reshape() will not work
## Not run:
reshape(mydf, direction = "long", idvar=1:2, varying=3:ncol(mydf))
## End(Not run)
## The Reshape() function can handle such scenarios
Reshape(mydf, id.vars = c("id_1", "id_2"),
var.stubs = c("varA", "varB", "varC"))

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.