Here are two ways using stack() and reshape() from base R. The "col" variable 
indicates which column the bcX value came from. Both are easy to scale up to 
multiple columns:

> exnew1 <- data.frame(ex$gIN, stack(ex, 2:3), ex$group)
> names(exnew1) <- c("gIn", "bcX", "col", "group")
> exnew1
   gIn     bcX col group
1  A_1 1219.79 bc1     A
2  A_2 1486.84 bc1     A
3  A_3 1255.80 bc1     A
4  A_4  941.87 bc1     A
5  B_1  588.19 bc1     B
6  B_2  304.02 bc1     B
7  A_1  319.79 bc2     A
8  A_2  186.84 bc2     A
9  A_3  125.80 bc2     A
10 A_4   94.87 bc2     A
11 B_1 1008.19 bc2     B
12 B_2  314.02 bc2     B
> 
> exnew2 <- reshape(ex, varying=2:3, v.names="bcX", timevar="col", 
+ direction="long")
> rownames(exnew2) <- NULL
> exnew2 <- exnew2[,c(1, 4, 3, 2)]
> exnew2
   gIN     bcX col group
1  A_1 1219.79   1     A
2  A_2 1486.84   1     A
3  A_3 1255.80   1     A
4  A_4  941.87   1     A
5  B_1  588.19   1     B
6  B_2  304.02   1     B
7  A_1  319.79   2     A
8  A_2  186.84   2     A
9  A_3  125.80   2     A
10 A_4   94.87   2     A
11 B_1 1008.19   2     B
12 B_2  314.02   2     B

To get bc1, bc2 instead of 1, 2 in the col field:

> exnew2 <- reshape(ex, varying=2:3, v.names="bcX", timevar="col",
+       times=colnames(ex)[2:3], direction="long")

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352


-----Original Message-----
From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Bert Gunter
Sent: Thursday, June 4, 2015 8:58 AM
To: javascriptart25
Cc: r-help@r-project.org
Subject: Re: [R] reshape a data frame

Yes. This is basic stuff, and it seems unnecessary to run to packages for
it, Knowledge of base R should suffice. It would appear that the OP would
benefit by going through an R tutorial or two.

Slightly more economical and more general -- and trickier -- than explicit
concatenation, which could get to be a drag with a lot of columns, is this:

> colms <- match(c("bc1","bc2"),names(ex))
> exnew <- cbind(z[,-colms],bcx=unlist(ex[,colms]))

> exnew
     gIN group     bcx
bc11 A_1     A 1219.79
bc12 A_2     A 1486.84
bc13 A_3     A 1255.80
bc14 A_4     A  941.87
bc15 B_1     B  588.19
bc16 B_2     B  304.02
bc21 A_1     A  319.79
bc22 A_2     A  186.84
bc23 A_3     A  125.80
bc24 A_4     A   94.87
bc25 B_1     B 1008.19
bc26 B_2     B  314.02

Cheers,
Bert

Bert Gunter

"Data is not information. Information is not knowledge. And knowledge is
certainly not wisdom."
   -- Clifford Stoll

On Wed, Jun 3, 2015 at 3:02 PM, javascriptart25 <javascriptar...@gmail.com>
wrote:

> You can change ex <- data.frame("gIN" = gIN, "bc1" = bc1, "bc2"=bc2,
> "group" = group)
>
> to
>
> ex <- data.frame("gIN" = c(gIN,gIN), "bcX" = c(bc1,bc2), "group" =
> c(group,group))
>
>
> On Wed, Jun 3, 2015 at 2:27 PM, hedelhusk [via R] <
> ml-node+s789695n4708145...@n4.nabble.com> wrote:
>
> > Hello,
> >
> > I would like to ask for some advice in reformatting a data frame such as
> > the following one:
> >
> >
> > gIN <- c("A_1","A_2","A_3","A_4","B_1","B_2")
> > bc1 <- c(1219.79, 1486.84, 1255.80, 941.87, 588.19, 304.02)
> > bc2 <- c(319.79, 186.84, 125.80, 94.87, 1008.19, 314.02)
> > group <- c("A","A","A","A","B","B")
> >
> > ex <- data.frame("gIN" = gIN, "bc1" = bc1, "bc2"=bc2, "group" = group)
> >
> > > ex
> >   gIN     bc1     bc2 group
> > 1 A_1 1219.79  319.79     A
> > 2 A_2 1486.84  186.84     A
> > 3 A_3 1255.80  125.80     A
> > 4 A_4  941.87   94.87     A
> > 5 B_1  588.19 1008.19     B
> > 6 B_2  304.02  314.02     B
> >
> > I would like to reshape this data frame where all the columns that have
> > bc1, bc2,...etc are merged into a single column (call it bcX or
> something)
> > and the other variables are kept apart, the example solution follows:
> >
> >
> > > ex_reshaped
> >   gIN     bcX     group
> > 1 A_1 1219.79       A
> > 2 A_2 1486.84       A
> > 3 A_3 1255.80       A
> > 4 A_4  941.87        A
> > 5 B_1  588.19      B
> > 6 B_2  304.02       B
> > 7 A_1 319.79       A
> > 8 A_2 186.84       A
> > 9 A_3 125.80       A
> > 10 A_4 94.87       A
> > 11 B_1 1008.19   B
> > 12 B_2 314.02     B
> >
> > Does anyone know of a package, and/or command to accomplish this?
> >
> > Thank you
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] <http:///user/SendEmail.jtp?type=node&node=4708145&i=0>
> > mailing list -- To UNSUBSCRIBE and more, see
> > 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.
> >
> >
> > ------------------------------
> >  If you reply to this email, your message will be added to the discussion
> > below:
> > http://r.789695.n4.nabble.com/reshape-a-data-frame-tp4708145.html
> >  To start a new topic under R help, email
> > ml-node+s789695n789696...@n4.nabble.com
> > To unsubscribe from R, click here
> > <
> http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=789695&code=amF2YXNjcmlwdGFydDI1QGdtYWlsLmNvbXw3ODk2OTV8NTgxOTIwNTYy
> >
> > .
> > NAML
> > <
> http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml
> >
> >
>
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/reshape-a-data-frame-tp4708145p4708146.html
> Sent from the R help mailing list archive at Nabble.com.
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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 -- To UNSUBSCRIBE and more, see
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@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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