Hello, I am trying to reshape a data.frame in wide format into long format. Although in the reshape R documentation they programmer list some examples I am struggling to bring my data.frame into long and then transform it back into wide format. The data.frame I look at is: df <- data.frame(ID1 = c(1,1,1,1,1,1,1,1,1), ID2 = c("A", "A", "A", "B", "B", "B", "C", "C", "C"), ID3 = c("E", "E", "E", "E", "E", "E", "E", "E", "E"), X1 = c(1,4,3,5,2,4,6,4,2), X2 = c(6,8,9,6,7,8,9,6,7), X3 = c(7,6,7,5,6,5,6,7,5), X4 = c(1,2,1,2,3,1,2,1,2))> dfID1 ID2 ID3 X1 X2 X3 X4 1 1 A E 1 6 7 1 2 1 A E 4 8 6 2 3 1 A E 3 9 7 1 4 1 B E 5 6 5 2 5 1 B E 2 7 6 3 6 1 B E 4 8 5 1 7 1 C E 6 9 6 2 8 1 C E 4 6 7 1 9 1 C E 2 7 5 2 I want to use the reshape function to get the following result:> dfID1 ID2 ID3 X 1 1 A E 1 2 1 A E 4 3 1 A E 3 4 1 B E 5 5 1 B E 2 6 1 B E 4 7 1 C E 6 8 1 C E 4 9 1 C E 2 10 1 A E 6 11 1 A E 8 12 1 A E 9 13 1 B E 6 14 1 B E 7 15 1 B E 8 16 1 C E 9 17 1 C E 6 18 1 C E 7 19 1 A E 7 20 1 A E 6 21 1 A E 7 22 1 B E 5 23 1 B E 6 24 1 B E 5 25 1 C E 6 26 1 C E 7 27 1 C E 5 28 1 A E 1 29 1 A E 2 30 1 A E 1 31 1 B E 2 32 1 B E 3 33 1 B E 1 34 1 C E 2 35 1 C E 1 36 1 C E 2 Can anyone help? Cheers -- View this message in context: http://r.789695.n4.nabble.com/Help-on-reshape-function-tp4449464p4449464.html Sent from the R help mailing list archive at Nabble.com.
library(reshape2) melt(df, id.vars = c("ID1", "ID2", "ID3"))[, -4] # To drop an extraneous column (but you should take a look and see what it is for future reference) Michael On Tue, Mar 6, 2012 at 6:17 AM, mails <mails00000 at gmail.com> wrote:> Hello, > > > I am trying to reshape a data.frame in wide format into long format. > Although in the reshape R documentation > they programmer list some examples I am struggling to bring my data.frame > into long and then transform it back into wide format. The data.frame I look > at is: > > > df <- data.frame(ID1 = c(1,1,1,1,1,1,1,1,1), ID2 = c("A", "A", "A", "B", > "B", "B", "C", "C", "C"), > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ID3 = c("E", "E", "E", "E", "E", "E", "E", "E", "E"), > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X1 = c(1,4,3,5,2,4,6,4,2), X2 = c(6,8,9,6,7,8,9,6,7), > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X3 = c(7,6,7,5,6,5,6,7,5), X4 = c(1,2,1,2,3,1,2,1,2)) > >> df > ?ID1 ID2 ID3 X1 X2 X3 X4 > 1 ? 1 ? A ? E ?1 ?6 ?7 ?1 > 2 ? 1 ? A ? E ?4 ?8 ?6 ?2 > 3 ? 1 ? A ? E ?3 ?9 ?7 ?1 > 4 ? 1 ? B ? E ?5 ?6 ?5 ?2 > 5 ? 1 ? B ? E ?2 ?7 ?6 ?3 > 6 ? 1 ? B ? E ?4 ?8 ?5 ?1 > 7 ? 1 ? C ? E ?6 ?9 ?6 ?2 > 8 ? 1 ? C ? E ?4 ?6 ?7 ?1 > 9 ? 1 ? C ? E ?2 ?7 ?5 ?2 > > I want to use the reshape function to get the following result: > >> df > ?ID1 ID2 ID3 X > 1 ? 1 ? A ? E ?1 > 2 ? 1 ? A ? E ?4 > 3 ? 1 ? A ? E ?3 > 4 ? 1 ? B ? E ?5 > 5 ? 1 ? B ? E ?2 > 6 ? 1 ? B ? E ?4 > 7 ? 1 ? C ? E ?6 > 8 ? 1 ? C ? E ?4 > 9 ? 1 ? C ? E ?2 > > 10 ? 1 ? A ? E ?6 > 11 ? 1 ? A ? E ?8 > 12 ? 1 ? A ? E ?9 > 13 ? 1 ? B ? E ?6 > 14 ? 1 ? B ? E ?7 > 15 ? 1 ? B ? E ?8 > 16 ? 1 ? C ? E ?9 > 17 ? 1 ? C ? E ?6 > 18 ? 1 ? C ? E ?7 > > 19 ? 1 ? A ? E ?7 > 20 ? 1 ? A ? E ?6 > 21 ? 1 ? A ? E ?7 > 22 ? 1 ? B ? E ?5 > 23 ? 1 ? B ? E ?6 > 24 ? 1 ? B ? E ?5 > 25 ? 1 ? C ? E ?6 > 26 ? 1 ? C ? E ?7 > 27 ? 1 ? C ? E ?5 > > 28 ? 1 ? A ? E ?1 > 29 ? 1 ? A ? E ?2 > 30 ? 1 ? A ? E ?1 > 31 ? 1 ? B ? E ?2 > 32 ? 1 ? B ? E ?3 > 33 ? 1 ? B ? E ?1 > 34 ? 1 ? C ? E ?2 > 35 ? 1 ? C ? E ?1 > 36 ? 1 ? C ? E ?2 > > > Can anyone help? > > Cheers > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Help-on-reshape-function-tp4449464p4449464.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.
Hey Michael, thanks for your help. I think the reshape2 library works much better than the normal reshape function. However, I still cannot retransform my data.frame into wide format once used melt function to transform it into long format. How do I get it back to wide format? The documentation, unfortunately, is not very detailed. -- View this message in context: http://r.789695.n4.nabble.com/Help-on-reshape-function-tp4449464p4450044.html Sent from the R help mailing list archive at Nabble.com.
Just using the reshape() function in base R: df.long = reshape(df, varying=list(names(df)[4:7]), direction="long") This also gives two extra columns ("time" and "id") can can be dropped. Andy> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of R. Michael Weylandt > Sent: Tuesday, March 06, 2012 8:45 AM > To: mails > Cc: r-help at r-project.org > Subject: Re: [R] Help on reshape function > > library(reshape2) > > melt(df, id.vars = c("ID1", "ID2", "ID3"))[, -4] > # To drop an extraneous column (but you should take a look and see > what it is for future reference) > > Michael > > On Tue, Mar 6, 2012 at 6:17 AM, mails <mails00000 at gmail.com> wrote: > > Hello, > > > > > > I am trying to reshape a data.frame in wide format into long format. > > Although in the reshape R documentation > > they programmer list some examples I am struggling to bring > my data.frame > > into long and then transform it back into wide format. The > data.frame I look > > at is: > > > > > > df <- data.frame(ID1 = c(1,1,1,1,1,1,1,1,1), ID2 = c("A", > "A", "A", "B", > > "B", "B", "C", "C", "C"), > > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ID3 = c("E", "E", "E", "E", > "E", "E", "E", "E", "E"), > > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X1 = c(1,4,3,5,2,4,6,4,2), > X2 = c(6,8,9,6,7,8,9,6,7), > > > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X3 = c(7,6,7,5,6,5,6,7,5), > X4 = c(1,2,1,2,3,1,2,1,2)) > > > >> df > > ?ID1 ID2 ID3 X1 X2 X3 X4 > > 1 ? 1 ? A ? E ?1 ?6 ?7 ?1 > > 2 ? 1 ? A ? E ?4 ?8 ?6 ?2 > > 3 ? 1 ? A ? E ?3 ?9 ?7 ?1 > > 4 ? 1 ? B ? E ?5 ?6 ?5 ?2 > > 5 ? 1 ? B ? E ?2 ?7 ?6 ?3 > > 6 ? 1 ? B ? E ?4 ?8 ?5 ?1 > > 7 ? 1 ? C ? E ?6 ?9 ?6 ?2 > > 8 ? 1 ? C ? E ?4 ?6 ?7 ?1 > > 9 ? 1 ? C ? E ?2 ?7 ?5 ?2 > > > > I want to use the reshape function to get the following result: > > > >> df > > ?ID1 ID2 ID3 X > > 1 ? 1 ? A ? E ?1 > > 2 ? 1 ? A ? E ?4 > > 3 ? 1 ? A ? E ?3 > > 4 ? 1 ? B ? E ?5 > > 5 ? 1 ? B ? E ?2 > > 6 ? 1 ? B ? E ?4 > > 7 ? 1 ? C ? E ?6 > > 8 ? 1 ? C ? E ?4 > > 9 ? 1 ? C ? E ?2 > > > > 10 ? 1 ? A ? E ?6 > > 11 ? 1 ? A ? E ?8 > > 12 ? 1 ? A ? E ?9 > > 13 ? 1 ? B ? E ?6 > > 14 ? 1 ? B ? E ?7 > > 15 ? 1 ? B ? E ?8 > > 16 ? 1 ? C ? E ?9 > > 17 ? 1 ? C ? E ?6 > > 18 ? 1 ? C ? E ?7 > > > > 19 ? 1 ? A ? E ?7 > > 20 ? 1 ? A ? E ?6 > > 21 ? 1 ? A ? E ?7 > > 22 ? 1 ? B ? E ?5 > > 23 ? 1 ? B ? E ?6 > > 24 ? 1 ? B ? E ?5 > > 25 ? 1 ? C ? E ?6 > > 26 ? 1 ? C ? E ?7 > > 27 ? 1 ? C ? E ?5 > > > > 28 ? 1 ? A ? E ?1 > > 29 ? 1 ? A ? E ?2 > > 30 ? 1 ? A ? E ?1 > > 31 ? 1 ? B ? E ?2 > > 32 ? 1 ? B ? E ?3 > > 33 ? 1 ? B ? E ?1 > > 34 ? 1 ? C ? E ?2 > > 35 ? 1 ? C ? E ?1 > > 36 ? 1 ? C ? E ?2 > > > > > > Can anyone help? > > > > Cheers > > > > > > > > -- > > View this message in context: > http://r.789695.n4.nabble.com/Help-on-reshape-function-tp4449464p4449464.html> > Sent from the R help mailing list archive at Nabble.com. > > > > ______________________________________________ > > 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. > > ______________________________________________ > 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. >Notice: This e-mail message, together with any attachme...{{dropped:11}}