[R] How to reshape wide format data.frame to long format?
David Winsemius
dwinsemius at comcast.net
Thu Jan 20 17:14:08 CET 2011
On Jan 20, 2011, at 10:51 AM, Fredrik Karlsson wrote:
> Dear list,
>
> I need to convert this data.frame
>
>> names(codesM)
> [1] "key" "AMR.pa1.M" "AMR.pa2.M" "AMR.pa3.M" "AMR.pa4.M"
> [6] "AMR.pa5.M" "AMR.pa6.M" "AMR.pa7.M" "AMR.pa8.M" "AMR.pa9.M"
> [11] "AMR.pa10.M" "AMR.ta1.M" "AMR.ta2.M" "AMR.ta3.M" "AMR.ta4.M"
> [16] "AMR.ta5.M" "AMR.ta6.M" "AMR.ta7.M" "AMR.ta8.M" "AMR.ta9.M"
> [21] "AMR.ta10.M" "AMR.ka1.M" "AMR.ka2.M" "AMR.ka3.M" "AMR.ka4.M"
> [26] "AMR.ka5.M" "AMR.ka6.M" "AMR.ka7.M" "AMR.ka8.M" "AMR.ka9.M"
> [31] "AMR.ka10.M" "SMR.pa1.M" "SMR.pa2.M" "SMR.pa3.M" "SMR.pa4.M"
> [36] "SMR.pa5.M" "SMR.pa6.M" "SMR.pa7.M" "SMR.pa8.M" "SMR.pa9.M"
> [41] "SMR.pa10.M" "SMR.ta1.M" "SMR.ta2.M" "SMR.ta3.M" "SMR.ta4.M"
> [46] "SMR.ta5.M" "SMR.ta6.M" "SMR.ta7.M" "SMR.ta8.M" "SMR.ta9.M"
> [51] "SMR.ta10.M" "SMR.ka1.M" "SMR.ka2.M" "SMR.ka3.M" "SMR.ka4.M"
> [56] "SMR.ka5.M" "SMR.ka6.M" "SMR.ka7.M" "SMR.ka8.M" "SMR.ka9.M"
> [61] "SMR.ka10.M"
>> dim(codesM)
> [1] 42 61
>
> into a 3 x 2501 data.frame where the "key" variable is kept, the
> values in columns 2-61 above is inserted into a "values" column and
> the name of the column is inserted in a third column ("variable"
> perhaps).
>
> Like
>
> key variable value
> POSTOFF_1_1 AMR.pa1.M 5
> POSTOFF_1_1 AMR.pa2.M 3
> ....
I don't "see" anything special about this. If there is an unusual
aspect to it, then you should post a simpler full example. What
happens when you try:
library(reshape2)
longCodes <- melt(codesM)
(Then you can fiddle with the names() of the new dataframe.)
>
> I think I should be able to do this using the "reshape" function, but
> I cannot get it to work. I think I need some help to understand
> this...
>
>
> (If I could split the "variable" into three separate columns splitting
> by ".", that would be even better.)
Use strsplit and "["
If that's not clear, then post results of dput( codesM[1:5, 1:10] ) to
provide a reproducible example.
>
> I appreciate all the help I could get.
>
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list