# Re: [R] Convert dataframe with two factors from wide to long format

From: Gang Chen <gangchen6_at_gmail.com>
Date: Sun, 22 May 2011 19:25:15 -0400

Just learned another trick today. Thanks a lot to both of you for the kind help!

Gang

On Sun, May 22, 2011 at 6:04 PM, Dennis Murphy <djmuser_at_gmail.com> wrote:

> Hi:
>
> library(reshape2)
> d1 <- melt(d, id = 'Subj')
> d1 <- cbind(d1, colsplit(d1\$variable, '_', c('Time', 'Cond')))
> d1 <- transform(d1,
> Time = substr(Time, 2, 2),
> Cond = substr(Cond, 5, 5))[c(1, 4, 5, 3)]
> str(d1)
> d1
>
> You can decide whether to leave Time and Cond as character or to
> convert them to numeric or factor.
>
> HTH,
> Dennis
>

> Assume this is a dataframe named 'tst'
>
> require(reshape2)
> ltest <- melt(tst, id.vars =1)
>
> dcast(ltest, ubj+substr(variable, 1,2) + substr(variable, 4,8) ~. )
> ubj substr(variable, 1, 2) substr(variable, 4, 8) NA
> 1 1 T1 Cond1 0.125869
> 2 1 T1 Cond2 4.108232
> 3 1 T2 Cond1 1.099392
> 4 1 T2 Cond2 5.556614
> 5 2 T1 Cond1 1.427940
> 6 2 T1 Cond2 2.170026
> 7 2 T2 Cond1 0.120748
> 8 2 T2 Cond2 1.176353
>
> dcast(ltest, ubj+substr(variable, 1,2) ~ substr(variable, 4,8) )
>
> ubj substr(variable, 1, 2) Cond1 Cond2
> 1 1 T1 0.125869 4.108232
> 2 1 T2 1.099392 5.556614
> 3 2 T1 1.427940 2.170026
> 4 2 T2 0.120748 1.176353
>
> The modifications to get it exactly as requested are left to the reader
>

> On Sun, May 22, 2011 at 2:25 PM, Gang Chen <gangchen6@gmail.com> wrote:
> > I know how to convert a simple dataframe from wide to long format with
> one
> > varying factor. However, for a dataset with two factors like the
> following,
> >
> > Subj T1_Cond1 T1_Cond2 T2_Cond1 T2_Cond2
> > 1 0.125869 4.108232 1.099392 5.556614
> > 2 1.427940 2.170026 0.120748 1.176353
> >
> > How to elegantly convert to a long form as
> >
> > Subj Time Cond Value
> > 1 1 1 0.125869
> > 1 1 2 4.108232
> > 1 2 1 1.099392
> > ...
> >
> >
> > Gang
>

[[alternative HTML version deleted]]

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 Sun 22 May 2011 - 23:36:25 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

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 Mon 23 May 2011 - 02:40:09 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.