Hi, I have a dataframe that has a column of vectors that I need to extract off the character string before the first '.' character and put it into a separate column. I thought I could use 'strsplit' for it within 'transform', but I can't seem to get the right invocation. Here is a sample dataframe that has what I have, what I want, and what I get. Can someone tell me how to get what is in the 'want' column from the 'have' column programatically? tia, Matt df <- data.frame(have=c("a.b.c", "d.e.f", "g.h.i"), want=c("a","d","g")) df.xform <- transform(df, get=strsplit(as.character(have), split=".", fixed=TRUE)[[1]][1]) df.xform [[alternative HTML version deleted]]
try this:> dfhave want 1 a.b.c a 2 d.e.f d 3 g.h.i g> df$get <- gsub("^([^.]+).*", "\\1", df$have) > dfhave want get 1 a.b.c a a 2 d.e.f d d 3 g.h.i g g On Mon, Oct 25, 2010 at 12:53 PM, Matthew Pettis <matthew.pettis at gmail.com> wrote:> Hi, > > I have a dataframe that has a column of vectors that I need to extract off > the character string before the first '.' character and put it into a > separate column. ?I thought I could use 'strsplit' for it within > 'transform', but I can't seem to get the right invocation. ?Here is a sample > dataframe that has what I have, what I want, and what I get. ?Can someone > tell me how to get what is in the 'want' column from the 'have' column > programatically? > > tia, > Matt > > df <- data.frame(have=c("a.b.c", "d.e.f", "g.h.i"), want=c("a","d","g")) > df.xform <- transform(df, get=strsplit(as.character(have), split=".", > fixed=TRUE)[[1]][1]) > df.xform > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
On Mon, Oct 25, 2010 at 12:53 PM, Matthew Pettis <matthew.pettis at gmail.com> wrote:> Hi, > > I have a dataframe that has a column of vectors that I need to extract off > the character string before the first '.' character and put it into a > separate column. ?I thought I could use 'strsplit' for it within > 'transform', but I can't seem to get the right invocation. ?Here is a sample > dataframe that has what I have, what I want, and what I get. ?Can someone > tell me how to get what is in the 'want' column from the 'have' column > programatically? > > tia, > Matt > > df <- data.frame(have=c("a.b.c", "d.e.f", "g.h.i"), want=c("a","d","g")) > df.xform <- transform(df, get=strsplit(as.character(have), split=".", > fixed=TRUE)[[1]][1]) > df.xform >Try replacing the dot [.] and everything thereafter .* with nothing "" like this: transform(df, want = sub("[.].*", "", have)) -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com