Robert Terwilliger wrote:
Dear R experts,
I have a so-called person-level data frame that I need to transform
into a person-period data frame.
If the lingo is unclear, the data have one row for each subject, with
repeated measures data each in a separate column.
I need to transform these data so that each subject has multiple rows,
one for each repeated measure value.
Is there a quick-and-dirty way to do this transformation?
Many thanks,
There are several ways. This is one.
> tmp <- data.frame(id=letters[1:3], x1=1:3, x2=4:6, x3=7:9, x4=10:12)
> tmp
id x1 x2 x3 x4
1 a 1 4 7 10
2 b 2 5 8 11
3 c 3 6 9 12
> reshape(tmp, direction="long", varying=list(names(tmp)[-1]), ids="id")
id time x1
a.1 a 1 1
b.1 b 1 2
c.1 c 1 3
a.2 a 2 4
b.2 b 2 5
c.2 c 2 6
a.3 a 3 7
b.3 b 3 8
c.3 c 3 9
a.4 a 4 10
b.4 b 4 11
c.4 c 4 12
>
______________________________________________
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.