[R] how to reshape the data.frame from long to wide in a specific order
Gabor Grothendieck
ggrothendieck at gmail.com
Tue Mar 15 04:04:04 CET 2011
On Mon, Mar 14, 2011 at 9:06 PM, zhenjiang xu <zhenjiang.xu at gmail.com> wrote:
> Hi,
>
> For example, the data.frame like:
>
> origdata.long <- read.table(header=T, con <- textConnection('
> subject sex condition measurement
> 1 M control 7.9
> 1 M first 12.3
> 1 M second 10.7
> 2 F control 6.3
> 2 F first 10.6
> 2 F second 11.1
> 3 F control 9.5
> 3 F first 13.1
> 3 F second 13.8
> 4 M control 11.5
> 4 M first 13.4
> 4 M second 12.9
> '))
> close(con)
>
> Given a vector c('first', 'second', 'control), how can I reshape the
> data.frame to this?
> # subject sex first second control
> # 1 M 12.3 10.7 7.9
> # 2 F 10.6 11.1 6.3
> # 3 F 13.1 13.8 9.5
> # 4 M 13.4 12.9 11.5
>
> I know reshape() can transform the data.frame from long to wide, but it
> seems not able to control the order of the columns.
You could reorder the columns afterwards:
reshape(origdata.long, dir = "wide", idvar = c("subject", "sex"),
timevar = "condition")[ c(1:2, 4:5, 3) ]
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-help
mailing list