Re: [R] Reshape Dataframe

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue, 18 Dec 2007 09:54:08 -0500

On Dec 18, 2007 9:07 AM, Bert Jacobs <b.jacobs_at_pandora.be> wrote:
>
> Hi,
>
> I'm having a bit of problems in creating a new dataframe.
> Below you'll find a description of the current dataframe and of the
> dataframe that needs to be created.
> Can someone help me out on this one?
> Thx in advance.
> Bert
>
> Current Dataframe
>
> Var1 Var2 Var3 Var4
> A Fa W1 1
> A Si W1 2
> A Fa W2 3
> A Si W3 4
> B Si W1 5
> C La W2 6
> C Do W4 7
>
> New Dataframe
>
> Var1 Var2 W1 W2 W3 W4
> A Fa 1 3
> A Si 2 4
> A La
> A Do
> B Fa
> B Si 5
> B La
> B Do
> C Fa
> C Si
> C La 6
> C Do 7

Try this:

out <- ftable(xtabs(Var4 ~ Var1 + Var2 + Var3, DF)) out[out == 0] <- NA

Omit the last line is 0 fill is what you had wanted.

This will do it except that it will eliminate all rows without data:

out2 <- reshape(DF, dir = "wide", timevar = "Var3", idvar = c("Var1", "Var2")) out2[is.na(out2)] <- 0

Omit the last line if NA fill is what you wanted.

The reshape package melt/cast routines (see Hadley's solution in this thread) can be used
to give a similar result to the reshape command above (i.e. all missing rows are not
included) except that cast is a bit more flexible since it has a fill= argument.



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. Received on Tue 18 Dec 2007 - 14:58:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 18 Dec 2007 - 15:30:19 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.