AC -
   The easiest way I can think of is to create a time variable,
so reshape will know which observation to call 1, 2, or 3.

data$time = unlist(sapply(split(data,data$id),function(x)1:nrow(x)))
or
data$time = unlist(tapply(data$id,data$id,function(x)1:length(x))

Then

reshape(data,idvar=c('id','author'),timevar='time',direction='wide')

should give you what you want.
                                        - Phil Spector
                                         Statistical Computing Facility
                                         Department of Statistics
                                         UC Berkeley
                                         spec...@stat.berkeley.edu


On Sun, 4 Oct 2009, AC Del Re wrote:

Dear R Community,
I am attempting to transpose a dataset from rows to columns but am stuck. I
have tried using reshape() with little luck, possibly due to the categorical
nature of the data. For example:

id<-c(1,2,2,3,3,3)
author<-c("j","k","k","l","l","l")
tmt<-c("cbt","act","dbt","act","act","cbt")
alliance<-c("wai","other","calpas","wai","itas","other")
data<-as.data.frame(cbind(id,author,tmt,alliance))

data
 id author  tmt  alliance
1  1      j    cbt      wai
2  2      k   act    other
3  2      k   dbt   calpas
4  3      l   act      wai
5  3      l   act     itas
6  3      l   cbt    other

I would like the data to be in the following format:

id   author   tmt.1  tmt.2   alliance.1   alliance.2    alliance.3
1    j           cbt      NA        wai          NA            NA
2   k           act      dbt        other       calpas        NA
3   l            act      act        wai          itas            other


I tried:

wide <- reshape(data, idvar=c("id","author"), direction="wide")

Error in `[.data.frame`(data, , timevar) : undefined columns selected

If I specify all columns, it gives the following format (which is not
desired):

wide <- reshape(data, idvar=c("id","author"),
+ direction="wide", *v.names="tmt", timevar="alliance"*)

wide
 id author tmt.wai tmt.other tmt.calpas tmt.itas
1  1      j     cbt      <NA>       <NA>     <NA>
2  2      k    <NA>       act        dbt     <NA>
4  3      l     act       cbt       <NA>      act

Any help is much appreciated!

AC

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.


______________________________________________
R-help@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.

Reply via email to