[R] separate and gather functions

reichm@@j m@iii@g oii sbcgiob@i@@et reichm@@j m@iii@g oii sbcgiob@i@@et
Tue Aug 13 04:46:10 CEST 2019


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]]



More information about the R-help mailing list