Hi:

Reshaping multiple variables is nontrivial.  Try the following (untested):

reshape(rcw, idvar = 'ICU', varying = list(c(paste('Q6.RC', 1:4, sep = '.'),
                               c(paste('Q6.FT.RC', 1:4, 'years', sep = '.'),
                              c(paste('Q6.FT.RC', 1:4, 'months', sep = '.'),
                               c(paste('Q6.PT.RC', 1:4, 'years', sep = '.'),
                              c(paste('Q6.PT.RC', 1:4, 'months', sep =
'.')),
             v.names = c("init","FTy","FTm","PTy","PTm"), direction =
'long')

The list contains the subgroups of the variables you want combined and
v.names, as you appear to know, provides new names for the reshaped columns.
My template example also has a times variable, but it may not be necessary
in your case.

HTH,
Dennis

On Tue, Sep 21, 2010 at 12:01 PM, Kevin E. Thorpe
<kevin.tho...@utoronto.ca>wrote:

> Is it an undocumented (at least I missed it if it's documented) feature
> of the reshape function to do numeric variables followed by character?
> I ask because that seems to be the case below.
>
> > str(rcw)
> 'data.frame':   23 obs. of  21 variables:
>  $ ICU              : int  1 18 17 9 22 19 6 16 25 26 ...
>  $ Q6.RC.1          : chr  "SM" "JF" "IW" "MS" ...
>  $ Q6.FT.RC.1.years : int  0 8 12 3 9 1 5 16 5 5 ...
>  $ Q6.FT.RC.1.months: int  0 0 0 0 0 0 0 6 0 0 ...
>  $ Q6.PT.RC.1.years : int  2 0 0 1 2 0 0 0 0 0 ...
>  $ Q6.PT.RC.1.months: int  0 0 0 0 0 0 0 0 0 0 ...
>  $ Q6.RC.2          : chr  "BA" "ML" "TM" "YL" ...
>  $ Q6.FT.RC.2.years : int  0 0 7 3 0 99999 0 0 0 0 ...
>  $ Q6.FT.RC.2.months: int  0 0 0 0 0 99999 0 0 0 0 ...
>  $ Q6.PT.RC.2.years : int  2 10 2 0 0 99999 0 5 0 0 ...
>  $ Q6.PT.RC.2.months: int  0 0 0 0 8 99999 1 0 6 6 ...
>  $ Q6.RC.3          : chr  "LL" "TM" "99999" "99999" ...
>  $ Q6.FT.RC.3.years : int  6 0 99999 99999 99999 99999 0 99999 0 0 ...
>  $ Q6.FT.RC.3.months: int  0 0 99999 99999 99999 99999 0 99999 0 0 ...
>  $ Q6.PT.RC.3.years : int  0 8 99999 99999 99999 99999 0 99999 0 0 ...
>  $ Q6.PT.RC.3.months: int  0 0 99999 99999 99999 99999 1 99999 4 4 ...
>  $ Q6.RC.4          : chr  "99999" "IW" "99999" "99999" ...
>  $ Q6.FT.RC.4.years : int  99999 0 99999 99999 99999 99999 99999 99999
> 99999 99999 ...
>  $ Q6.FT.RC.4.months: int  99999 0 99999 99999 99999 99999 99999 99999
> 99999 99999 ...
>  $ Q6.PT.RC.4.years : int  99999 12 99999 99999 99999 99999 99999 99999
> 99999 99999 ...
>  $ Q6.PT.RC.4.months: int  99999 0 99999 99999 99999 99999 99999 99999
> 99999 99999 ...
>
> This data frame needs to be converted to long format with 5 variables
> repeating over 4 observations.
>
> > rcl <-
> reshape(rcw,idvar="ICU",varying=2:21,direction="long",v.names=c("init","FTy","FTm","PTy","PTm"))
>
> > str(rcl)
> 'data.frame':   92 obs. of  7 variables:
>  $ ICU : int  1 18 17 9 22 19 6 16 25 26 ...
>  $ time: int  1 1 1 1 1 1 1 1 1 1 ...
>  $ init: int  0 0 0 0 0 0 0 6 0 0 ...
>  $ FTy : int  0 8 12 3 9 1 5 16 5 5 ...
>  $ FTm : int  0 0 0 0 0 0 0 0 0 0 ...
>  $ PTy : int  2 0 0 1 2 0 0 0 0 0 ...
>  $ PTm : chr  "SM" "JF" "IW" "MS" ...
>  - attr(*, "reshapeLong")=List of 4
>  ..$ varying:List of 5
>  .. ..$ FTm : chr  "Q6.FT.RC.1.months" "Q6.FT.RC.2.months"
> "Q6.FT.RC.3.months" "Q6.FT.RC.4.months"
>  .. ..$ FTy : chr  "Q6.FT.RC.1.years" "Q6.FT.RC.2.years" "Q6.FT.RC.3.years"
> "Q6.FT.RC.4.years"
>  .. ..$ PTm : chr  "Q6.PT.RC.1.months" "Q6.PT.RC.2.months"
> "Q6.PT.RC.3.months" "Q6.PT.RC.4.months"
>  .. ..$ PTy : chr  "Q6.PT.RC.1.years" "Q6.PT.RC.2.years" "Q6.PT.RC.3.years"
> "Q6.PT.RC.4.years"
>  .. ..$ init: chr  "Q6.RC.1" "Q6.RC.2" "Q6.RC.3" "Q6.RC.4"
>  .. ..- attr(*, "v.names")= chr  "init" "FTy" "FTm" "PTy" ...
>  .. ..- attr(*, "times")= int  1 2 3 4
>  ..$ v.names: chr  "init" "FTy" "FTm" "PTy" ...
>  ..$ idvar  : chr "ICU"
>  ..$ timevar: chr "time"
>
> In the result, the values in the first of the varying variables goes
> into the last variable while the other values are shifted left.  The
> attributes in the result are correct, but the contents of rcl$PTm are
> what I expected in rcl$init.
>
> > sessionInfo()
> R version 2.11.1 Patched (2010-07-21 r52598)
> Platform: i686-pc-linux-gnu (32-bit)
>
> locale:
>  [1] LC_CTYPE=en_US       LC_NUMERIC=C         LC_TIME=en_US
>  [4] LC_COLLATE=C         LC_MONETARY=C        LC_MESSAGES=en_US
>  [7] LC_PAPER=en_US       LC_NAME=C            LC_ADDRESS=C
> [10] LC_TELEPHONE=C       LC_MEASUREMENT=en_US LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> loaded via a namespace (and not attached):
> [1] tools_2.11.1
>
> --
> Kevin E. Thorpe
> Biostatistician/Trialist, Knowledge Translation Program
> Assistant Professor, Dalla Lana School of Public Health
> University of Toronto
> email: kevin.tho...@utoronto.ca  Tel: 416.864.5776  Fax: 416.864.3016
>
> ______________________________________________
> 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.
>

        [[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.

Reply via email to