Hi, I am using the NLSY79 data (longitudinal data from the Bureau of labour stats in the US). The extractor exctracts this data in a "wide" format and I need to reshape it into a long format. What I am doing right now is to do it in chuncks for each and evry variable that is varying and then I merge the data together. This is taking a long time. my question is: How do I specify that there are multiple variables that are varying in reshape. Is there a way to do this? The idea is to have something like varying1, varying2,etc,... and each are assosiated with their own times1, times2. something like reshape(mydata, direction="long", varying1=varying1,varying2=varying2, varying3=varying3, split=list(regexp="[a-z][0-9]", include=TRUE), idvar="ID", times1=times1, times2=times2, times3=times3) Jean
It's in the documentation for reshape - make the varying argument a
list. Here is an example:
famf.uni <- reshape(famf,
varying = list(c("DUSI2BL", "DUSI3M",
"DUSI6M", "DUSI1Y" ),
c("DNKTOTBL", "DNKTOT3M",
"DNKTOT6M", "DNKTOT1Y" ),
c("DAYDNKBL", "DAYDNK3M",
"DAYDNK6M", "DAYDNK1Y" ),
c("HVYALCBL", "HVYALC3M",
"HVYALC6M", "HVYALC1Y" ),
c("BALCSV15", "DALCSV15",
"EALCSV15", "FALCSV15" ),
c("BALCSV27", "DALCSV27",
"EALCSV27", "FALCSV27" ),
c("PCSBLT", "PCS3MT",
"PCS6MT", "PCS1YT" ),
c("MCSBLT", "MCS3MT",
"MCS6MT", "MCS1YT" ),
c("BSIANXBL", "BSIANX3M",
"BSIANX6M", "BSIANX1Y" ),
c("BSIPSYBL", "BSIPSY3M",
"BSIPSY6M", "BSIPSY1Y" ),
c("CESDBL", "CESD3M",
"CESD6M", "CESD1Y" )),
v.names = c("DUSI", "DNKTOT", "DAYDNK",
"HVYALC", "ALCSV15", "ALCSV27",
"PCST",
"MCST", "BSIANX", "BSIPSY",
"CESD"),
timevar = "TIME", times = c("BL", "3M",
"6M", "1Y"), direction = "long")
hope this helps,
Chuck Cleland
Jean Eid wrote:> I am using the NLSY79 data (longitudinal data from the Bureau of labour
> stats in the US). The extractor exctracts this data in a "wide"
format and
> I need to reshape it into a long format.
>
> What I am doing right now is to do it in chuncks for each and evry
> variable that is varying and then I merge the data together. This is
> taking a long time. my question is:
>
> How do I specify that there are multiple variables that are varying in
> reshape. Is there a way to do this?
>
> The idea is to have something like varying1, varying2,etc,... and each are
> assosiated with their own times1, times2.
>
> something like
> reshape(mydata, direction="long",
varying1=varying1,varying2=varying2,
> varying3=varying3, split=list(regexp="[a-z][0-9]", include=TRUE),
> idvar="ID", times1=times1, times2=times2, times3=times3)
--
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894
On Wed, 26 Jan 2005, Jean Eid wrote:> > Hi, > > I am using the NLSY79 data (longitudinal data from the Bureau of labour > stats in the US). The extractor exctracts this data in a "wide" format and > I need to reshape it into a long format. > > What I am doing right now is to do it in chuncks for each and evry > variable that is varying and then I merge the data together. This is > taking a long time. my question is: > > How do I specify that there are multiple variables that are varying in > reshape. Is there a way to do this?Yes. The help page says varying: names of sets of variables in the wide format that correspond to single variables in long format ('time-varying'). A list of vectors (or optionally a matrix for 'direction="wide"'). See below for more details and options. That is, you can use something like varying=list(c("foo1","foo2","foo3"), c("bar1","bar2","bar3"), c("baz1","baz2","baz3")), v.names=c("foo","bar","baz") -thomas