... Or if you just want to stick with basic regex's without extra packages:> x <- "\"cm_ffm\":\"563.77\"" > sub("[^[:digit:]]*([[:digit:]]*.?[[:digit:]]*).*","\\1",x)[1] "563.77" Cheers, Bert On Wed, Aug 2, 2017 at 5:16 PM, Ismail SEZEN <sezenismail at gmail.com> wrote:> >> On 3 Aug 2017, at 02:59, Christofer Bogaso <bogaso.christofer at gmail.com> wrote: >> >> Hi again, >> >> I am struggling to extract the number part from below string : >> >> "\"cm_ffm\":\"563.77\"" >> >> Basically, I need to extract 563.77 from above. The underlying number >> can be a whole number, and there could be comma separator as well. >> >> So far I tried below : >> >>> library(stringr) >> >>> str_extract("\"cm_ffm\":\"563.77\"", "[[:digit:]]+") >> >> [1] "563" >> >>> >> >> However, above code is only extracting the integer part. >> >> Could you please help how to achieve that. Thanks, > > > library(readr) > parse_number('"cm_ffm":"563.77?') > > ______________________________________________ > R-help at 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.
... and Marc's solution is **much** better than mine. -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Wed, Aug 2, 2017 at 5:59 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:> ... Or if you just want to stick with basic regex's without extra packages: > >> x <- "\"cm_ffm\":\"563.77\"" >> sub("[^[:digit:]]*([[:digit:]]*.?[[:digit:]]*).*","\\1",x) > > [1] "563.77" > > Cheers, > Bert > > > > On Wed, Aug 2, 2017 at 5:16 PM, Ismail SEZEN <sezenismail at gmail.com> wrote: >> >>> On 3 Aug 2017, at 02:59, Christofer Bogaso <bogaso.christofer at gmail.com> wrote: >>> >>> Hi again, >>> >>> I am struggling to extract the number part from below string : >>> >>> "\"cm_ffm\":\"563.77\"" >>> >>> Basically, I need to extract 563.77 from above. The underlying number >>> can be a whole number, and there could be comma separator as well. >>> >>> So far I tried below : >>> >>>> library(stringr) >>> >>>> str_extract("\"cm_ffm\":\"563.77\"", "[[:digit:]]+") >>> >>> [1] "563" >>> >>>> >>> >>> However, above code is only extracting the integer part. >>> >>> Could you please help how to achieve that. Thanks, >> >> >> library(readr) >> parse_number('"cm_ffm":"563.77?') >> >> ______________________________________________ >> R-help at 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.
Thanks Bert. I should probably also explicitly mention that if Christofer wants to ultimately coerce the numeric components of the strings to numeric data types for subsequent mathematical operations, you will need to strip the commas anyway. In that case, my first response, where I did not include the comma character in the regex may be preferred. Regards, Marc> On Aug 2, 2017, at 8:00 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote: > > ... and Marc's solution is **much** better than mine. > > -- Bert > Bert Gunter > > "The trouble with having an open mind is that people keep coming along > and sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > On Wed, Aug 2, 2017 at 5:59 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote: >> ... Or if you just want to stick with basic regex's without extra packages: >> >>> x <- "\"cm_ffm\":\"563.77\"" >>> sub("[^[:digit:]]*([[:digit:]]*.?[[:digit:]]*).*","\\1",x) >> >> [1] "563.77" >> >> Cheers, >> Bert >> >> >> >> On Wed, Aug 2, 2017 at 5:16 PM, Ismail SEZEN <sezenismail at gmail.com> wrote: >>> >>>> On 3 Aug 2017, at 02:59, Christofer Bogaso <bogaso.christofer at gmail.com> wrote: >>>> >>>> Hi again, >>>> >>>> I am struggling to extract the number part from below string : >>>> >>>> "\"cm_ffm\":\"563.77\"" >>>> >>>> Basically, I need to extract 563.77 from above. The underlying number >>>> can be a whole number, and there could be comma separator as well. >>>> >>>> So far I tried below : >>>> >>>>> library(stringr) >>>> >>>>> str_extract("\"cm_ffm\":\"563.77\"", "[[:digit:]]+") >>>> >>>> [1] "563" >>>> >>>>> >>>> >>>> However, above code is only extracting the integer part. >>>> >>>> Could you please help how to achieve that. Thanks, >>> >>> >>> library(readr) >>> parse_number('"cm_ffm":"563.77?') >>> >>> ______________________________________________ >>> R-help at 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 at 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.