[R] separate and gather functions

reichm@@j m@iii@g oii sbcgiob@i@@et reichm@@j m@iii@g oii sbcgiob@i@@et
Wed Aug 14 15:06:28 CEST 2019


That's even easier

-----Original Message-----
From: Ista Zahn <istazahn using gmail.com> 
Sent: Tuesday, August 13, 2019 8:22 AM
To: reichmanj using sbcglobal.net
Cc: William Dunlap <wdunlap using tibco.com>; r-help using r-project.org
Subject: Re: [R] separate and gather functions

How about

> library(tidyr)
> separate_rows(d, Col2)
      Col1      Col2
1 Agency A Function1
2 Agency A Function2
3 Agency A Function3
4 Agency A Function4
5 Agency B Function2
6 Agency B Function4
7 Agency C Function1
8 Agency C Function3
9 Agency C Function4


On Mon, Aug 12, 2019 at 11:06 PM <reichmanj using sbcglobal.net> wrote:
>
> William
>
>
>
> Yes that works a little better as I don’t have to create notional 
> variables. Thank you
>
>
>
> Jeff
>
>
>
> From: William Dunlap <wdunlap using tibco.com>
> Sent: Monday, August 12, 2019 6:46 PM
> To: Jeff Reichman <reichmanj using sbcglobal.net>
> Cc: r-help using r-project.org
> Subject: Re: [R] separate and gather functions
>
>
>
> This one uses only core R functions.  Does that count toward "elegance"?
>
>
>
> > # your data, I assume, in a form one can copy and paste into R
>
> > d <- data.frame(stringsAsFactors = FALSE,
>     Col1 = c("Agency A", "Agency B", "Agency C"),
>     Col2 = c("Function1, Function2, Function3, Function4",
>         "Function2, Function4", "Function1, Function3, Function4"))
>
> > # split Col2 by comma following by any number of spaces
>
> > tmp <- strsplit(d$Col2, split=", *")
> > data.frame(Col1 = rep(d$Col1, lengths(tmp)), Col2 = unlist(tmp), 
> > stringsAsFactors=FALSE)
>       Col1      Col2
> 1 Agency A Function1
> 2 Agency A Function2
> 3 Agency A Function3
> 4 Agency A Function4
> 5 Agency B Function2
> 6 Agency B Function4
> 7 Agency C Function1
> 8 Agency C Function3
> 9 Agency C Function4
>
>
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com <http://tibco.com>
>
>
>
>
>
> On Mon, Aug 12, 2019 at 4:23 PM <reichmanj using sbcglobal.net <mailto:reichmanj using sbcglobal.net> > wrote:
>
> R-Help Forum
>
>
>
> I have a data set from which I have extracted two columns Column 1 is 
> a listing of Federal agencies and Column 2 lists functions like this
>
>
>
> Col1                       Col2
>
> Agency A             Function1, Function2, Function3, Function4
>
> Agency B              Function2, Function4
>
> Agency C              Function1, Function3, Function4
>
>
>
> What I need is a long list like this
>
>
>
> Col1                       Col2
>
> Agency A             Function1
>
> Agency A             Function2
>
> Agency 4              Function3 etc
>
>
>
> Is there a more elegant /efficient way other than what I did which was 
> to separate Col2 into separate columns and then gather the data back 
> up
>
>
>
> myDat3 <- separate(data= myDat2, col = type, into = c("x1", "x2", 
> "x3", "x4", "x5"), sep = ",")
>
> myDat4 <- gather(data=myDat3, key="type", value = "Value", 
> "x1","x2","x3","x4","x5", na.rm = TRUE)
>
>
>
> while it works, looking for a more elegant solution, if there is one
>
>
>
> Jeff
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org <mailto: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]]
>
> ______________________________________________
> 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.



More information about the R-help mailing list