Skip to content

split a field in dependence of the semicolon

3 messages · Matthias Weber, Bert Gunter, David Winsemius

#
Hello togehter,

i have a little problem, maybe anyone can help me.

I have a data.frame, which look like this one:
      ID         Members
1     1         ; abc; def; ghi
2     2         ; abc;
3     3         ;def;

How can I create another column for each value between 2 semicolons?

The result look like this one:

      ID         Members                Member1            Member2             Member3
1     1         ; abc; def; ghi         abc                     def                     ghi
2     2         ; abc;                     abc
3     3         ;def;                      def

Maybe anyone can help me. Thank you.

Best regards.

Mat


________________________________
This e-mail may contain trade secrets, privileged, undisclosed or otherwise confidential information. If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited. Please inform us immediately and destroy the original transmittal. Thank you for your cooperation.

Diese E-Mail kann Betriebs- oder Geschaeftsgeheimnisse oder sonstige vertrauliche Informationen enthalten. Sollten Sie diese E-Mail irrtuemlich erhalten haben, ist Ihnen eine Kenntnisnahme des Inhalts, eine Vervielfaeltigung oder Weitergabe der E-Mail ausdruecklich untersagt. Bitte benachrichtigen Sie uns und vernichten Sie die empfangene E-Mail. Vielen Dank.
#
See ?strsplit using the fixed =";" argument on the column containing
the character vector you wish to split.

The trickier part is that the result is a list that needs to be
manipulated -- ?do.call might be useful here, although I haven't
thought about it seriously -- to build your data frame containing
missings. There are various ways to do this, but  "An Introduction to
R" (ships with R) -- you have read it right? -- should provide the
info you need.

That should get you started. Others may provide a more complete
solution, but that's much less fun.

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

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




On Mon, Nov 3, 2014 at 8:05 AM, Matthias Weber
<Matthias.Weber at fntsoftware.com> wrote:
#
On Nov 3, 2014, at 10:47 AM, Bert Gunter wrote:

            
Here's a start using the fill argument to read.table and the 'Members' column as text data:

cbind(dat,  
      read.table(text=as.character(dat$Members), sep=";", fill =TRUE)[-1] )

#----------------------
     ID            Members   V2   V3   V4
1     1    ; abc; def; ghi  abc  def  ghi
2     2             ; abc;  abc          
3     3              ;def;  def
David Winsemius
Alameda, CA, USA