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

Dennis Murphy djmuser at gmail.com
Mon May 23 00:04:06 CEST 2011


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

On Sun, May 22, 2011 at 2:25 PM, Gang Chen <gangchen6 at 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
> ...
>
> Thanks in advance!
>
> 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.
>



More information about the R-help mailing list