Re: [R] Manipulate Data (with regular expressions)

From: Kenn Konstabel <lebatsnok_at_gmail.com>
Date: Fri, 11 Jul 2008 12:47:07 +0300

try something like this:

x<-c("220a1", "220ab1", "220a12", "a34dkaffdse223", "abc123") sub(".*([[:digit:]]{3}).*", "\\1", x)

( ?regexp is also useful)

kk

On Fri, Jul 11, 2008 at 12:04 PM, Kunzler, Andreas <a.kunzler_at_bzaek.de> wrote:

> Thank you a lot,
>
> I am almost done, but unfortunately I have to manipulate values like
>
> x
> 220a1
> 220ab1
> 220a12
>
> to
>
> y
> 220
> 220
> 220
>
> Eventhough it is easy to macht a 3-digit number
> [0-9]{3}
> I habe no idea how to mach everything except a 3-digit number in order to
> replace everything but the 3-digit number by ""
>
> y <- gsub(RE for Everything but a 3-digit number, "", x)
>
> Maybe it ist possible to use the MATCH as the Replacer
>
> y <- gsub([0-9]{3}, MATCH, x)
>
> Thank you
>
> -----Ursprüngliche Nachricht-----
> Von: Gabor Grothendieck [mailto:ggrothendieck_at_gmail.com]
> Gesendet: Dienstag, 8. Juli 2008 17:20
> An: Kunzler, Andreas
> Cc: r-help_at_r-project.org
> Betreff: Re: [R] Manipulate Data (with regular expressions)
>
> Try this:
>
> x <- factor(c("220", "220a", "221", "221b", "B221"))
> pat <- "[^0-9]+" # match non-digits
> nums <- as.numeric(gsub(pat, "", x))
> has.lets <- as.numeric(regexpr(pat, x) > 0)
>
>
> On Tue, Jul 8, 2008 at 7:11 AM, Kunzler, Andreas <a.kunzler_at_bzaek.de>
> wrote:
> > Dear Everyone,
> >
> >
> >
> > I try to automatically manipulate the data of a variable (class =
> > factor) like
> >
> >
> >
> > x
> >
> > 220
> >
> > 220a
> >
> > 221
> >
> > 221b
> >
> > B221
> >
> >
> >
> > Into two variables (class = numeric) like
> >
> >
> >
> > x y
> >
> > 220 0
> >
> > 220 1
> >
> > 221 0
> >
> > 221 1
> >
> > 221 1
> >
> >
> >
> > y has to carry the information about the class (number or string) of the
> > former x-Variable.
> >
> >
> >
> > I could do it by hand like
> >
> >
> >
> > x[x == "220a"] <- 220
> >
> > y[x == "220a"] <- 1
> >
> >
> >
> > but x has way to many expressions.
> >
> >
> >
> > So I wondered if I could use a regular expression like OR ANY OTHER WAY
> >
> >
> >
> > x[x == [0-9]{3}a] <- regular expression
> >
> > y[x == [0-9]{3}] <- 1
> >
> >
> >
> >
> >
> > Thanks a lot
> >
> >
> >
> >
> > [[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.
> >
>
> ______________________________________________
> 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.
>

        [[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. Received on Fri 11 Jul 2008 - 09:54:50 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 11 Jul 2008 - 11:31:48 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive