Dimitri Liakhovitski
2010-Oct-05 15:36 UTC
[R] reshape not using as id vars what it is supposed to be using?
Hellow!
I am replicating the example givien in "Reshaping Data with the
reshape Package" (http://www.jstatsoft.org/v21/i12 - see
"download"
link on the right), p. 2-3.
library(reshape)
data(smiths)
str(smiths)
The text says: "If you specify only one of measured and identifier
variables, melt assumes that all the other variables are the OTHER
sort:"
Hence, the result of the following 5 lines should be identical:
melt.data.frame(smiths, id = c("subject", "time"), measured
= c("age",
"weight","height"))
melt.data.frame(smiths, id = c("subject", "time"))
melt.data.frame(smiths, id = 1:2)
melt.data.frame(smiths, measured = c("age", "weight",
"height"))
melt.data.frame(smiths) # If you do not specify them
explicitly, melt will assume that any factor or character variables
are id variables
However, only the first 3 lines produce the same result.
I am especially surprised why line 4 uses "time" as a measured
variable, while it should be clear to reshape that "time" is NOT a
measured variable?
Thank you!
--
Dimitri Liakhovitski
Ninah Consulting
www.ninah.com
Ista Zahn
2010-Oct-05 16:17 UTC
[R] reshape not using as id vars what it is supposed to be using?
Hi Dimitri,
The argument names may have changed. Notice that
melt.data.frame(smiths, measured = c("age", "weight",
"height"))
gives a message saying "Using subject as id variables". This is
because measured variables need to be specified as measure.vars (or an
abbreviation of that: even m will work because no other arguments
start with m).
> args(melt.data.frame)
function (data, id.vars, measure.vars, variable_name = "variable",
na.rm = !preserve.na, preserve.na = TRUE, ...)
Bottom line: you need something like
melt.data.frame(smiths, measure.vars = c("age", "weight",
"height"))
Best,
Ista
On Tue, Oct 5, 2010 at 11:36 AM, Dimitri Liakhovitski
<dimitri.liakhovitski at gmail.com> wrote:> Hellow!
>
> I am replicating the example givien in "Reshaping Data with the
> reshape Package" (http://www.jstatsoft.org/v21/i12 - see
"download"
> link on the right), p. 2-3.
>
> library(reshape)
> data(smiths)
> str(smiths)
>
> The text says: "If you specify only one of measured and identifier
> variables, melt assumes that all the other variables are the OTHER
> sort:"
> Hence, the result of the following 5 lines should be identical:
>
> melt.data.frame(smiths, id = c("subject", "time"),
measured = c("age",
> "weight","height"))
> melt.data.frame(smiths, id = c("subject", "time"))
> melt.data.frame(smiths, id = 1:2)
> melt.data.frame(smiths, measured = c("age", "weight",
"height"))
> melt.data.frame(smiths) ? ? ? ? ? ? ? ? ? # If you do not specify them
> explicitly, melt will assume that any factor or character variables
> are id variables
>
>
> However, only the first 3 lines produce the same result.
> I am especially surprised why line 4 uses "time" as a measured
> variable, while it should be clear to reshape that "time" is NOT
a
> measured variable?
>
>
> Thank you!
> --
> Dimitri Liakhovitski
> Ninah Consulting
> www.ninah.com
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org