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 <reichm...@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 <wdun...@tibco.com> > Sent: Monday, August 12, 2019 6:46 PM > To: Jeff Reichman <reichm...@sbcglobal.net> > Cc: r-help@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 <reichm...@sbcglobal.net > <mailto:reichm...@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@r-project.org <mailto: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.