[R] how to turn column into column names and fill it with values

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Tue Sep 29 21:18:07 CEST 2020


A simpler, cleaner, and maybe faster approach is to use outer():

nm <- unique(dat$PLATE)
dat <- cbind(dat, 1+outer(dat$PLATE,nm,  "=="))
names(dat)[-(1:3)] <- nm

Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Tue, Sep 29, 2020 at 11:20 AM Rui Barradas <ruipbarradas using sapo.pt> wrote:

> Hello,
>
> Something like this?
>
> mc <- read.table(text = "
>        FID  IID   PLATE
> 1 fam0110 G110 4RWG569
> 2 fam0113 G113  cherry
> 3 fam0114 G114  cherry
> 4 fam0117 G117 4RWG569
> 5 fam0118 G118 5XAV049
> 6 fam0119 G119  cherry
> ", header = TRUE)
>
>
>
> library(dplyr)
> library(tidyr)
>
> mc %>%
>    group_by(PLATE) %>%
>    mutate(counts = n()) %>%
>    pivot_wider(
>      id_cols = c("FID", "IID"),
>      names_from = "PLATE",
>      values_from = counts,
>      values_fill = list(counts = 0)
>    )
>
>
> Hope this helps,
>
> Rui Barradas
>
> Às 17:18 de 29/09/20, Ana Marija escreveu:
> > Hello,
> >
> > I have a data frame like this:
> >
> >> head(mc)
> >        FID  IID   PLATE
> > 1 fam0110 G110 4RWG569
> > 2 fam0113 G113  cherry
> > 3 fam0114 G114  cherry
> > 4 fam0117 G117 4RWG569
> > 5 fam0118 G118 5XAV049
> > 6 fam0119 G119  cherry
> > ...
> >> dim(mc)
> > [1] 1625    4
> >> length(unique(mc$PLATE))
> > [1] 34
> >
> > I am trying to make a new data frame which would look like this:
> >        FID  IID   PLATE   4RWG569  cherry 5XAV049 ...
> > 1 fam0110 G110 4RWG569  2  1  1
> > 2 fam0113 G113  cherry   1  2  1
> > 3 fam0114 G114  cherry   1  2  1
> > 4 fam0117 G117 4RWG569  2  1  1
> > 5 fam0118 G118 5XAV049   2  1  1
> > 6 fam0119 G119  cherry   1  2  1
> > ...
> >
> > so the new data frame would have an additional 34 columns (for every
> > unique mc$PLATE) and if in the row of PLATE column the value is ==to
> > that column name I would have 2 otherwise 1
> >
> > I tried to do this with:
> >
> > library(reshape2)
> >>   m2=dcast(mc, IID ~ PLATE)
> > Using PLATE as value column: use value.var to override.
> >
> > Please advise,
> > Ana
> >
> > ______________________________________________
> > R-help using 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 using 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]]



More information about the R-help mailing list