[R] how to transform a data file

Petr PIKAL petr.pikal at precheza.cz
Tue Nov 29 09:12:35 CET 2011


Hi

option 3
library(reshape)
melt(d, id.vars="id")

Regards
Petr


> Hi PJ,
> 
> Try
> 
> # some data
> id <- 1:20
> m <- matrix(sample(0:1, 200, TRUE), ncol = 10)
> colnames(m) <- paste('V', 1:10, sep = "")
> d <- data.frame(id, m)
> d
> 
> # option 1
> cbind(rep(d$id, each = ncol(d)-1), matrix(unlist(t(d[,-1])), ncol = 1))
> 
> # option 2
> cbind(rep(d$id, each = ncol(d) - 1), stack(d[,-1])[,-2])
> 
> HTH,
> Jorge.-
> 
> 
> On Mon, Nov 28, 2011 at 10:19 PM, pat j <> wrote:
> 
> > Hello R people,
> >
> > I have a data file with 101 numeric variables: one variable called IDN 
(the
> > individual's unique id number, which I need to retain, and which 
ranges
> > from 1000 to 1320; some numbers are obviously skipped), and V1 to V100
> > (each has a value of 0 or 1; these 100 variables represent 
sequentially
> > ordered days and whether a characteristic was present or absent--e.g., 
v1
> > is day 1 and a "1" means the characteristic is present; v10 is day 10 
and
> > "0" means the characteristic is absent).
> >
> > This may be child's play for many on this list, but how do I transform 
this
> > data file to two columns, one called "id"  and another column named 
"c"
> > with 100 rows? I think it will end up being a 1000 row file. I've read 
some
> > and think that I'm trying to "melt" my existing data. I can transpose 
the
> > v1 to v100 with t(v1 to v100) but then I'm unclear on how to 
automatically
> > generate 100 identical IDN's for each case and variable and then put 
them
> > together.
> >
> >  This may be redundant, but for the sake of clarity, what I'm trying 
to do
> > is get from this:
> >
> > IDN      V1 V2 V3 … V100
> >
> > 1       0   1   0  . . .       1
> >
> > 2       1  1   1   . . .       0
> >
> > 4        0  1   0   . . .      1
> >
> > .
> >
> > .
> >
> > 100   0  1   0   . . .       1
> >
> > To this:
> >
> > id   c
> >
> > 1    0
> >
> > 1    1
> >
> > 1    0
> >
> > .      .
> >
> > .    [continue 96 more times for c4 - c100]
> >
> > 1     1
> >
> > 2     1
> >
> > 2     1
> >
> > 2     1
> >
> > .       .
> >
> > . [continue 96 more times for c4 - c100]
> >
> > 2     0
> >
> > .
> >
> > .
> >
> > .
> >
> >  [then repeat this for the next 98 cases]
> >
> > 100    0  1   0              1
> >
> >
> >    Thank you very much.
> >
> > PJ
> >
> >        [[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.
> >
> >
> 
>    [[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